Ich habe die folgende Liste, die Tupel/dicts geschachtelt hat.Iterieren durch eine Liste bestehend aus verschachtelten Tupeln/Wörterbüchern
list1 = [
('key1', {'count': 10, 'value1': Counter({'set1': 5, 'set2': 4, 'set3': 1})}),
('key2', {'count': 8, 'value1': Counter({'set1': 6, 'set2': 2})}),
('key3', {'count': 7, 'value1': Counter({'set1': 5, 'set2': 2, 'set3': 1})})
]
Dies ist, was ich bisher habe;
for key, value in list1:
print key, value['count'], '|||', value['value1'].keys(), value['value1'].values()
Result:
key1 10 ||| ['set1', 'set2', 'set3'] [5, 4, 1]
key2 8 ||| ['set1', 'set2'] [6, 2]
key3 7 ||| ['set1', 'set2', 'set3'] [5, 2, 1]
Was ich kann nicht herausfinden, wie es durch jeden Satz laufen zu machen und seine Zählung wie folgt drucken;
key1 10 ||| set1 5, set 4, set3 1
key2 8 ||| set1 6, set2 2
key3 7 ||| set1 5, set2 2, set3 1
Für den Zählerwert, kann ich nur die Schlüssel zu bekommen scheinen, oder nur die Werte, sondern durch sie einen nach dem anderen nicht durchlaufen, wie oben gezeigt.
Vielen Dank, genau das, was ich suchte. Mir war nicht klar, dass die Funktion counter most_common() dort verwendet werden könnte, sehr nützlich. – user1165419
Hey, wenn du mich bei der Erstellung einer neuen Frage retten kannst, weißt du, wie ich das mit .format formatieren kannst? Ich habe versucht "{1} {0}". Format (* (kv für kv in Wert ['Wert1']. Most_common())) '. Es funktioniert nicht, aber wenn ich ein 'für kv in Wert ['Wert1'] most_common(): print" {1} {0} ". Format (* kv)' es tut. Grund ist, dass ich die Reihenfolge der% s und% d ändern möchte. – user1165419
@ user1165419: Sie haben nur zwei Steckplätze in Ihrem String-Format, aber versuchen, eine * Liste von Paaren * zu übergeben. Das wird nicht funktionieren. Sie müssen einzelne Paare formatieren und dann das Ergebnis mit Kommas dazwischen verbinden: '',' .join (['{1: d} {0}'. Format (* kv) für kv in Wert ['Wert1']. most_common()]) ' –