Python - Zip 2列入1个字典

时间:2017-01-22 04:02:39

标签: python python-2.7 list dictionary

我正在使用Python创建一些脚本并提出一个小问题。

我有2个名单:

  1. ['name', 'age', 'sex', 'addr', 'city']

  2. ['Jack 24 male no23 NY', 'Jane 25 female no24 NY', 'Dane 14 male no14 NY']

  3. 所以我希望:

    dictofJack = {'name': 'Jack', 'age': '24', 'sex': 'male', 'addr': 'no23', 'city':'NY'}
    
    dictofJane = {'name': 'Jane', 'age': '25', 'sex': 'female', 'addr': 'no24', 'city':'NY'}
    
    dictofDane = {'name': 'Dane', 'age': '14', 'sex': 'male', 'addr': 'no14', 'city':'NY'}
    

    在这种情况下,如何使用zip使其在for循环中自动获取字典?

1 个答案:

答案 0 :(得分:6)

使用list comprehensiongenerator expression

>>> header = ['name', 'age', 'sex', 'addr', 'city']
>>> values = ['Jack   24   male   no23   NY',
              'Jane   25   female   no24   NY',
              'Dane   14   male   no14   NY']
>>> dictofJack, dictofJane, dictofDane = (
        dict(zip(header, value.split())) for value in values
    )
>>> dictofJack
{'addr': 'no23', 'age': '24', 'city': 'NY', 'name': 'Jack', 'sex': 'male'}
>>> dictofJane
{'addr': 'no24', 'age': '25', 'city':'NY', 'name': 'Jane', 'sex': 'female'}
>>> dictofDane
{'addr': 'no14', 'age': '14', 'city': 'NY', 'name': 'Dane', 'sex': 'male'}
顺便说一句,我建议使用dictionary comprehension

,而不是制作多个字典变量,我建议使用字典词典(想想需要100个词典的情况)
>>> {value.split()[0]: dict(zip(header, value.split())) for value in values}
{'Jane': {'addr': 'no24', 'age': '25', 'city': 'NY', 'name': 'Jane', 'sex': 'female'},
 'Dane': {'addr': 'no14', 'age': '14', 'city': 'NY', 'name': 'Dane', 'sex': 'male'},
 'Jack': {'addr': 'no23', 'age': '24', 'city': 'NY', 'name': 'Jack', 'sex': 'male'}}