[英]Creating dict from file with repeated row names
我有一个.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:
然后使用条件创建列表,然后将其添加到字典中。 但是我想要一种更整洁的方法。
这是另一种更直接的方法:
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]}
import collections
d = collections.defaultdict(list)
with open('data.txt','r') as fp:
for line in fp:
l = map(int, line.strip().split())
d[l[0]].extend(l[1:])
print(d)
# defaultdict(<type 'list'>, {1: [3, 4], 2: [5, 6], 5: [7]})
将每一行拆分为一个(键,值)对,并将它们添加到默认字典中,并将空列表作为初始值
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)
这是一个不带任何导入并将其转换为整数的选项:
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]}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.