Ich habe einen 2-Spalten-Tab-getrennten Eingang, den ich ein Wörterbuch in python
auffüllen möchte. Die erste Spalte wird dem Schlüssel zugeordnet (es gibt Duplikate) und die zweite Spalte wird dem Wert zugeordnet.Listenwert in Python-Wörterbuch mit relevantem Schlüssel verknüpfen
Probeneingang:
cat tail
cat whisker
cat meow
cat black
dog tail
dog paw
dog bark
bird beak
ich den folgenden Code geschrieben haben, die eine (wenn auch falsch) Ausgang erzeugt, das Wörterbuch-Format enthält, die ich suche, die allen ein Schlüssel aus col1 zuordnet seiner Werte in col2.
Der Code, den ich verwendet habe, ist:
#!/usr/bin/python
# -*- coding: utf-8 -*-
keys = []
values = []
with open('animal-trial', "rU") as f:
for line in f:
line = line.split()
keys.append(line[0])
values.append(line[1])
d = {}
for k,v in zip(keys, values):
d.setdefault(k, []).append(v)
print d
ich [HERE] andere Referenzen ausgesehen haben auf, [HERE] und [HERE] jedoch alle Vorschläge, auch mit defaultdicts
mich bringen, um die gleiche Leistung, eher als die gewünschte Ausgabe.
Die tatsächliche Ausgabe lautet:
{'cat': ['tail']}
{'cat': ['tail', 'whisker']}
{'cat': ['tail', 'whisker', 'meow']}
{'cat': ['tail', 'whisker', 'meow', 'black']}
{'dog': ['tail'], 'cat': ['tail', 'whisker', 'meow', 'black']}
{'dog': ['tail', 'paw'], 'cat': ['tail', 'whisker', 'meow', 'black']}
{'dog': ['tail', 'paw', 'bark'], 'cat': ['tail', 'whisker', 'meow', 'black']}
{'bird': ['beak'], 'dog': ['tail', 'paw', 'bark'], 'cat': ['tail', 'whisker', 'meow', 'black']}
Die gewünschte Ausgang
ist{'bird': ['beak'], 'dog': ['tail', 'paw', 'bark'], 'cat': ['tail', 'whisker', 'meow', 'black']}
Kann zeigen Sie mir jemand, wo ich einen Fehler mache oder eine umfassendere Lösung, so dass Das Endergebnis ist one
Wörterbuch?
Sie * bis * haben ein Wörterbuch. Ihr Einzug muss sich von dem, was Sie gepostet haben, unterscheiden. Ihre letzte Druckanweisung befindet sich wahrscheinlich in der for-Schleife. –
@ owwoow14 Das ist richtig, dein Code funktioniert, denke ich. Drücken Sie die Anweisung 'print d' zurück. – MYGz