Wenn ich so etwas tun:Hinzufügen von verschachtelten Wörterbücher in Python von Ausbeute
x1={'Count': 11, 'Name': 'Andrew'}
x2={'Count': 14, 'Name': 'Matt'}
x3={'Count': 17, 'Name': 'Devin'}
x4={'Count': 20, 'Name': 'Andrew'}
x1
vars=[x1,x2,x3,x4]
for i in vars:
my_dict[i[group_by_column]]=i
my_dict
Dann erhalte ich:
defaultdict(int,
{'Andrew': {'Count': 20, 'Name': 'Andrew'},
'Devin': {'Count': 17, 'Name': 'Devin'},
'Geoff': {'Count': 10, 'Name': 'Geoff'},
'Matt': {'Count': 14, 'Name': 'Matt'}})
das ist genau das, was ich will.
Wenn ich jedoch versuche, dies von einem Objekt zu replizieren, in dem ein yield
eingebaut ist, überschreibt es sehr viel Wert im Wörterbuch. Zum Beispiel cast_record_stream
ist eine Funktion, so dass die folgenden Wörterbücher wie gewünscht ergibt:
{'Count': 11, 'Name': 'Andrew'}
{'Count': 14, 'Name': 'Matt'}
{'Count': 17, 'Name': 'Devin'}
{'Count': 20, 'Name': 'Andrew'}
{'Count': 5, 'Name': 'Geoff'}
{'Count': 10, 'Name': 'Geoff'}
Also dann, wenn ich ausführen, um diese Funktion es kommt aus falsch:
for line in cast_record_stream:
record_name=line['Name']
my_dict[record_name]=line
defaultdict(<type 'int'>, {'Devin': {'Count': 10, 'Name': 'Geoff'},
'Matt': {'Count': 10, 'Name': 'Geoff'},
'Geoff': {'Count': 10, 'Name': 'Geoff'},
'Andrew': {'Count': 10, 'Name': 'Geoff'}})
Bin ich hier ein Problem, dass ich die Schaffung kann nicht sehen? Ich dachte, es würde nur einen Wert nach dem anderen hinzufügen.
Es könnte hilfreich sein, Ihren Code mit dem gewünschten yield zu zeigen. –
Es sind mehrere Funktionen miteinander verkettet, so dass es nur verwirrend werden würde. Der wichtige Teil ist, dass es jedes der oben aufgelisteten Wörterbücher hervorbringt, von denen einige einen wiederholten 'Namen' haben. – vashts85
Meine Vermutung:' cast_record_stream' modifiziert und liefert das gleiche Wörterbuch wieder. Stellen Sie sicher, dass Sie vor der Abgabe ein neues Diktat erstellen. –