3

同じ長さの 2 つのリストと辞書があります

list1 = ['hello', 'goodbye', 'no', 'yes', 'if you say so']
list2 = ['a', 'b', 'c', 'd; e; f', 'g']
listDict = {}

対応する値をそれぞれキーと値として追加したいので、辞書の出力は次のようになります(順序は同じままでなければなりません)

listDict = {'hello':'a', 'goodbye':'b', 'no':'c', 'yes':'d; e; f', 'if you say so':'g'}

私は試した

for words in list1:
    for letters in list2:
        listDict[words]=[letters]

しかし、それは間違った結果をもたらします(私はそれらを理解できません)。上記のように出力を取得するにはどうすればよいですか?

4

2 に答える 2

4

使用zip():

>>> list1 = ['hello', 'goodbye', 'no', 'yes', 'if you say so']
>>> list2 = ['a', 'b', 'c', 'd; e; f', 'g']
>>> dict(zip(list1,list2))
{'if you say so': 'g', 'yes': 'd; e; f', 'hello': 'a', 'goodbye': 'b', 'no': 'c'}

'yes' 'if you say so'は単一の文字列と見なされるため、,これらを区切るために使用します。

>>> 'yes' 'if you say so'
'yesif you say so'

collections.OrderedDict順序を維持するために使用します。

>>> from collections import OrderedDict
>>> OrderedDict(zip(list1,list2))

OrderedDict([('hello', 'a'), ('goodbye', 'b'), ('no', 'c'), ('yes', 'd; e; f'), ('if you say so', 'g')])
于 2013-05-13T10:43:47.847 に答える
1
list1 = ['hello', 'goodbye', 'no', 'yes' 'if you say so']
list2 = ['a', 'b', 'c', 'd; e; f', 'g']    
listDict = dict(zip(list1, list2))
于 2013-05-13T10:43:46.307 に答える