从具有重复行名称的文件创建dict

时间:2016-12-07 16:23:19

标签: python dictionary

我有一个.txt文件,其值如下:

1 3 4
2 5 6
5 7

我想像这样创建一个字典:

1 [3, 4]
2 [5, 6]
5 [7]

一行中的第一个数字是键,行的其余部分是要放入列表的值。

实现这一目标的最有效方法是什么? 我知道使用

迭代的方法
f = open('data.txt','r')
for i in f:

然后使用condition创建一个列表,然后将其添加到dict中。但我想要一个更简洁的方法来做到这一点。

3 个答案:

答案 0 :(得分:2)

这是另一种更直接的方法:

d = {}
with open('somedata.txt', 'rt') as f:
    for line in f:
        numbers = map(int, line.split())
        numbers = list(numbers) # for Python 3
        d.setdefault(numbers[0], []).extend(numbers[1:])

print(d)  # -> {1: [3, 4], 2: [5, 6], 5: [7]}

答案 1 :(得分:1)

将每一行拆分为一个(键,值)对,并将它们添加到默认的dict中,并将空列表作为初始值

from collections import defaultdict

mydict = defaultdict(list)

for line in f.readlines():
    line = [int(item) for item in line.split()]
    key, *values = line
    mydict[key].extend(values)

答案 2 :(得分:0)

这是一个没有任何导入的选项,并将条目转换为整数:

testDict = {}

with open('test.txt') as f:
   lines = f.readlines()
   for line in lines:
      line = map(int, line.split(' '))
      testDict[line[0]] = list(line[1:])

print testDict # -> {1: [3, 4], 2: [5, 6], 5: [7]}