从文件中读取数据,存储在python dict中并在python中搜索值

时间:2011-09-01 06:27:08

标签: python dictionary

我有一个包含以下信息的文本文件:

A , 12
B , 34
A , 54
F , 60

我想读取文件,并将信息存储在python字典中,如下所示:{'A':['12','54',...],B:['34',.. ..]...} 等等。但我仍然坚持如何搜索每一个A行。这是我的尝试:

    repo = {}
    infile = open('test10.log','r')
    lines = infile.readlines()[2:-1]
    for i in lines:
            module = ''.join(i.split(',')[:-1])
            time = ''.join(i.split(',')[1:]).replace('\n','')
            if not module in repo: 
                    repo[module] = time

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

没有像{A:{12,54,...}, B:{34,....}这样的数据结构。但是:

repo = {}
infile = open('test10.log','r')
lines = infile.readlines()[2:-1]
for i in lines:
    module, time = [a.strip() for a in i.split(',')]
    repo.setdefault(module, []).append(int(time))

会给你一份清单:

{'A': [12, 54], 'B': [34], 'F': [60]}

这是你想要的吗?

答案 1 :(得分:0)

您可以尝试使用集合模块中的 defaultdict

from collections import defaultdict

repo = defaultdict(list)
infile = open('test10.log','r')
lines = infile.readlines()[2:-1]
for item in lines:
    module, time = [a.strip() for a in item.split(',')]
    repo[module].append(time)

如果你print(dict(repo.items())),你应该得到:

{'A': ['12', '54'], 'B': ['34'], 'F': ['60']}

如果你print(list(repo.items())),你应该得到:

[('A', ['12', '54']), ('B', ['34']), ('F', ['60'])]