简体   繁体   English

读取文件时创建Python字典

[英]create a Python dictionary when reading a file

I have a list derived from a text file (filename) with an header 我有一个从带有标题的文本文件(文件名)派生的列表

mylist = [l.split() for l in open(filename, "r")]

mylist = [['A','B','C','D'],['1','2','3','4'],['10','20','30','40'],['100','200','300','400']]

i wish to create a dictionary directly reading the file in order to save lines of code as: 我希望创建一个直接读取文件的字典,以将代码行保存为:

mtlist_dist = {A: ['1','10','100'], B: [''2,'20','200'], C: ['3','30','300'], D: ['4','40','400']}

You can do this easily with zip and a dictionary comprehension : 您可以使用zip字典理解轻松地做到这一点:

>>> mylist = [['A','B','C','D'],['1','2','3','4'],['10','20','30','40'],['100','200','300','400']]
>>> {x[0]:x[1:] for x in zip(*mylist)}
{'A': ('1', '10', '100'), 'C': ('3', '30', '300'), 'B': ('2', '20', '200'), 'D': ('4', '40', '400')}
>>> {x[0]:list(x[1:]) for x in zip(*mylist)}
{'A': ['1', '10', '100'], 'C': ['3', '30', '300'], 'B': ['2', '20', '200'], 'D': ['4', '40', '400']}
>>>

In Python 3.x, the solution becomes even more concise with extended iterable unpacking : 在Python 3.x中, 扩展的可迭代拆包解决方案变得更加简洁:

>>> mylist = [['A','B','C','D'],['1','2','3','4'],['10','20','30','40'],['100','200','300','400']]
>>> {x:y for x,*y in zip(*mylist)}
{'D': ['4', '40', '400'], 'A': ['1', '10', '100'], 'C': ['3', '30', '300'], 'B': ['2', '20', '200']}
>>>

You can do it as: 您可以按照以下方式进行操作:

my_dict = dict(zip(mylist[0], zip(*mylist[1:])))

>>> print my_dict
{'A': ('1', '10', '100'), 'C': ('3', '30', '300'), 'B': ('2', '20', '200'), 'D': ('4', '40', '400')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM