5

2 つの個別のリストを使用して辞書を作成する自動化された Python プロシージャを作成しようとしていますが、これまでのところ失敗しています。最初のリストの n 番目の項目が 2 番目のリストの n 番目の項目に対応する 2 つの並べ替えられたリストがあり、それらを辞書に結合したいと考えています。

たとえば、2 つのリストのサブセットは次のとおりです。

name = ['Adam', 'Alfred', 'Amy', 'Andy', 'Bob']
year = [1972, 1968, 1985, 1991, 1989]

私の出力は次のようになります。

birth_years = {'Adam':1972, 'Alfred':1968, 'Amy':1985, 'Andy':1991, 'Bob':1989}

forループでこれをやろうとしましたが、うまくいきませんでした。助けていただければ幸いです。

4

4 に答える 4

14

zipおよび関数を使用してdict、タプルのリストから辞書を作成します。

birth_years = dict(zip(name, year))

興味があるなら、これは私がforループでそれをやろうとする方法です:

birth_years = {}

for index, n in enumerate(name):
  birth_years[n] = years[index]

私は最初の例の方が好きだと思います。

于 2012-04-04T01:24:13.377 に答える
1
birth_years = {}
for i in range(len(name)):
    birth_years[name[i]] = year[i]
于 2012-04-04T01:32:54.570 に答える
1

辞書内包表記を試してください:

birth_years = {nm:year[idx] for idx, nm in enumerate(name)}
于 2014-04-03T12:23:48.477 に答える
0

あなたのリストは、 と という名前の方が良いでしょnamesyearsforループでやろうとしたことで、良いスタートを切りました。ほとんどの実用的なデータ処理の問題にはエラー チェックが含まれますが、これはワンライナーでは少し難しいものです。例:

birth_years = {}
for i, name in enumerate(names):
    if name in birth_years:
        log_duplicate(i, name, years[i]))
    else:
        birth_years[name] = years[i]
于 2012-04-04T15:28:42.533 に答える