从列表中创建字典

时间:2013-10-18 00:14:30

标签: python list dictionary

所以我创建了一个这样的列表:

list = [line.strip() for line in open('file.txt','r')]

这是我的清单的片段。

[
 '1 2',
 '2 3',
 '2 3',
 '4 3 1',
 '3 4',
 '5 4 2 1',
 '4 4',
 '8 3 5 2',
 '5 7',
 '15 11 8 9 6 3 4',
]

我想创建一个字典,其中第一个数字是键,后面的数字是值,但我希望它以int形式。

我不知道如何使用字典中涉及的类。

1 个答案:

答案 0 :(得分:5)

这应该可以解决问题:

In [3]: arrs = [map(int, line.strip().split()) for line in open('file.txt')] 
In [4]: first2rest = dict( (arr[0], arr[1:]) for arr in arrs)

In [5]: first2rest
Out[5]: {1: [2], 2: [3], 3: [4], 4: [4], 5: [7], 8: [3, 5, 2], 15: [11, 8, 9, 6, 3, 4]}

让我们分开吧。这部分将文件中的每一行拆分为空格并将它们转换为整数:

map(int, line.strip().split())

然后这部分创建行中第一项的字典到其余部分:

first2rest = dict( (arr[0], arr[1:]) for arr in arrs)

但是,正如@SethMMorton指出的那样,您将丢失数据,因为您列出的文件多次包含相同的密钥。