чтение данных из файла, сохранение в python dict и поиск значений в python - PullRequest
0 голосов
/ 01 сентября 2011

У меня был текстовый файл с некоторой информацией, подобной этой:

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

Я хочу прочитать файл и сохранить информацию в словаре Python, например: {'A': ['12', '54', ...], B: ['34', ....] ...} и так далее.Но я застрял с тем, как искать каждый А в строках.Это моя попытка:

    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 ]

3 голосов
/ 01 сентября 2011

Нет такой структуры данных, как {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]}

Это то, что вы хотите?

0 голосов
/ 01 сентября 2011

Вы можете попробовать использовать 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'])]

См.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...