从列表创建嵌套字典

时间:2014-04-11 16:57:19

标签: python list dictionary zip

我有一个python文本文件如下 甚至; 0;即使; 1;奇 奇数; 0;奇数; 1;甚至

打开并读取此文件后,我需要返回一个嵌套字典,其中外层是每行中的第一个字,内部字典将下一个数字作为键,其旁边的值作为值。我怎么能用zip功能实现这个呢?

所以例如第一行的dict看起来像这样: {even:{0:even,1:odd}}

xref = defaultdict(dict)
for line in file:
    list = line.strip().split(';')
    for item in list: 
        xref[list[0]] = {}

1 个答案:

答案 0 :(得分:0)

首先,您不能将list用作变量名,因为list是python中的关键字。也就是说,你走在正确的轨道上。这就是你想要的:

>>> xref = defaultdict(dict)
>>> for line in file:
        alist = line.strip().split(';')
        zlist = alist[1:]
        xref[alist[0]] = dict(zip(zlist[::2], zlist[1::2]))


>>> xref
defaultdict(<type 'dict'>, {'even': {'1': 'odd', '0': 'even'}, 'odd': {'1': 'even', '0': 'odd'}})

请注意,内部字典的元素顺序与预期的不同,但默认情况下字典中的元素是无序的。

希望这有帮助。