Python 从具有重复行名的文件创建dict
我有一个Python 从具有重复行名的文件创建dict,python,dictionary,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中。但我想用一种更简洁的方法来实现它。使用 导入集合 d=集合.defaultdict(列表) 将open('data.tx
.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中。但我想用一种更简洁的方法来实现它。使用
导入集合
d=集合.defaultdict(列表)
将open('data.txt','r')作为fp:
对于fp中的行:
l=map(int,line.strip().split())
d[l[0]]。扩展(l[1:])
印刷品(d)
#defaultdict(,{1:[3,4],2:[5,6],5:[7]})
将每行拆分为(键、值)对,并将它们添加到默认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)
下面是另一种更直接的方法:
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]}
这里有一个不包含任何导入的选项,可将条目转换为int:
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]}
解析文本文件并在执行过程中更新词典有什么不好的地方?当然,你可以读入整个文件,将其拆分,然后使用字典理解来完成,但这取决于编码人员的偏好
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]}