Как загрузить dict из списка в python? - PullRequest
3 голосов
/ 01 апреля 2012

Диктует как:

mydict= {'a':[],'b':[],'c':[],'d':[]}

список как:

log = [['a',917],['b', 312],['c',303],['d',212],['a',215],['b',212].['c',213],['d',202]]

Как мне получить все «a» из списка в mydict ['a'] в виде списка.

ndict= {'a':[917,215],'b':[312,212],'c':[303,213],'d':[212,202]}

Ответы [ 3 ]

7 голосов
/ 01 апреля 2012

Переберите список и добавьте каждое значение к правильному ключу:

for key, value in log:
    my_dict[key].append(value)

Я переименовал dict в my_dict, чтобы избежать затенения встроенного типа.

4 голосов
/ 01 апреля 2012

Это стандартная проблема, которую решает collection.defaultdict:

from collections import defaultdict

mydict = defaultdict(list)
for key, value in log:
    mydict[key].append(value)
2 голосов
/ 01 апреля 2012
myDict = {}
myLog = [['a', 917], ['b', 312], ['c', 303],['d', 212], ['a', 215],
         ['b', 212], ['c', 213], ['d', 202]]

# For each of the log in your input log
for log in myLog:
    # If it is already exist, you append it
    if log[0] in myDict:
        myDict[log[0]].append(log[1])
    # Otherwise you can create a new one
    else:
        myDict[log[0]] = [log[1]]

# Simple test to show it works
while True:
    lookup = input('Enter your key: ')
    if lookup in myDict:
        print(myDict[lookup])
    else:
        print('Item not found.')

Ответ Свена Марнача умнее и лучше, но я придумаю эту версию.Я вижу ограничение моего решения.

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