2015-10-12 5 views
0

Итак, у меня есть этот словарь, который сортирует текстовый файл. Этот текстовый файл представляет собой список, ограниченный равными знаками (то есть Packagename = номер версии).Мне нужно получить ВСЕ ключи и ВСЕ значения в словаре

После разбора файла:

mydict = {} 
with open('security-updates.txt') as f: 
    for line in f.readlines(): 
     mykey, sep, myval = line.partition('=') 
     mydict[mykey] = mykey 
     mydict[myval] = myval 

Когда я пытаюсь получить доступ к mydict[mykey] это только возвращает в списке последний ключ. Когда я пытаюсь получить доступ к mydict[myval], он возвращает только последнее значение . Мне нужно иметь возможность говорить «ALL» mykey »или« ALL »myval's» в словаре. Есть ли способ сделать это?

обновленный код

mydict = {} 
with open('chef-security-updates.txt') as f: 
    for line in f.readlines(): 
     mykey,sep,ver_val = line.partition('=') 
     mydict[mykey] = myval 

mydict.keys() 

Это весь блок. Я выяснил, что по какой-то причине я не могу print(mydict.keys()), но когда я установил mykeys = mydict.keys(), я могу распечатать mykeys. Функция печати вызывала ошибку типа. Кажется, все работает сейчас. Привет, всем, кто помогал мне.

+3

Я не понимаю, что вы хотите сделать ... Почему бы вам просто не хранить 'mydict [mykey] = myval', а затем извлекать из него все ключи и значения, используя' mydict.keys() 'и' mydict.values ​​() '? – stanleyli

+0

У вас есть дубликаты ключей или значений (я бы не думал о ключах, но как насчет значений)? Если это так, вы будете перезаписывать поля в своем dict. Кроме того, вы фактически используете 'mydict [mykey]'? Если это так, 'mykey 'все еще установлен на последнее значение из цикла? Кроме того, stanleyli имеет хороший смысл в использовании словаря. – vastlysuperiorman

+0

@stanleyli Я пробовал это, но я получаю «неподдерживаемый тип операндов для +:« dict_keys »и« str ». Все, что я сделал, это изменить код на «medicate [mykey] = myval» и снизу, я добавил заявление печати для печати ключей. (print (mydict.keys())) – jalyper

ответ

0

Вы неправильно создаете словарь. Это должно быть так:

mydict = {} 
with open('security-updates.txt') as f: 
    for line in f.readlines(): 
     mykey, sep, myval = line.partition('=') 
     mydict[mykey] = myval 
mydict.keys()   # all the keys of the dict 
mydict.values()   # all the values of the dict 
Смежные вопросы