2012-03-31 9 views
3

Haben dict mag:Wie lädt man ein Diktat aus einer Liste in Python?

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

Liste wie:

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

Wie ich alle bekommen tun 'a' aus der Liste in myDict [ 'a'] als Liste.

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

Antwort

7

Iterate über die Liste, und jeder Wert auf den richtigen Schlüssel anhängen:

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

I dict-my_dict umbenannt eingebauten Typ zu vermeiden Shadowing.

4

Dies ist ein Standard-Problem, das löst collections.defaultdict:

from collections import defaultdict 

mydict = defaultdict(list) 
for key, value in log: 
    mydict[key].append(value) 
+0

Ja, das ist die eleganteste Lösung IMHO :) Obwohl es 'mydict = defaultdict (Liste, mydict) 'sein könnte, wenn' mydict' bereits Werte enthält. –

2
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.') 

Sven Marnach Antwort ist intelligenter und besser, aber das ist die Version, die ich komme. Ich kann die Begrenzung meiner Lösung sehen.

+0

@GC Ihr versuchen, aber bei richtig ans. Es ist einfach. Ich konnte nicht herausfinden, wie man die zweite Zeile macht. – Merlin

+0

@Merline: Ja, ich kann sehen, dass die Lösung viel einfacher und besser ist. – George

+0

Arbeiten Sie weiter daran .... Denken Sie einfach. versuche nicht alles zu benutzen, was du weißt. das ist Python. Ihnen Kredit geben für das Versuchen. – Merlin

Verwandte Themen