Gibt es eine bessere Möglichkeit, zip mit einer beliebigen Anzahl von Itern zu verwenden?

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Gibt es eine bessere Möglichkeit, zip mit einer beliebigen Anzahl von Itern zu verwenden?

by Guest » 16 Jan 2025, 07:13

Mit einem Datensatz aus einem beliebigen Satz von Listen (oder Diktaten oder anderen Itern) möchte ich eine neue Liste oder ein neues Tupel erstellen, das alle ersten Einträge, dann alle zweiten usw. enthält, wie ein hstack .
Wenn ich einen bekannten Datensatz habe, kann ich ihn wie folgt zusammenpacken:

Code: Select all

data = {'2015': [2, 1, 4, 3, 2, 4],
'2016': [5, 3, 3, 2, 4, 6],
'2017': [3, 2, 4, 4, 5, 3]}

hstack = sum(zip(data['2015'], data['2016'], data['2017']), ())
print(hstack)
# hstack: (2, 5, 3, 1, 3, 2, 4, 3, 4, 3, 2, 4, 2, 4, 5, 4, 6, 3)
Aber was ist, wenn ich nicht weiß, wie viele Einträge (oder Schlüssel) das Diktat hat?
Für die Verarbeitung eines beliebigen Satzes von Iteratoren: Ich habe versucht:

Code: Select all

combined_lists = sum(zip(data[val] for val in data.keys()), ())
# combined_lists: ([2, 1, 4, 3, 2, 4], [5, 3, 3, 2, 4, 6], [3, 2, 4, 4, 5, 3])
Und außerdem:

Code: Select all

nums = sum(zip(num for val in data.keys() for num in data[val]), ())
# nums: (2, 1, 4, 3, 2, 4, 5, 3, 3, 2, 4, 6, 3, 2, 4, 4, 5, 3)
Aber beide behalten einfach die gleiche Reihenfolge bei, die ich durch das Zusammenfügen der Sequenzen erhalten konnte.
Ich konnte es zum Laufen bringen:

Code: Select all

counts = []
entry = list(data.keys())[0]
for idx, count in enumerate(data[entry]):
for val in list(data.keys()):
counts.append(data[val][idx])
# counts: [2, 5, 3, 1, 3, 2, 4, 3, 4, 3, 2, 4, 2, 4, 5, 4, 6, 3]
Das ist in Ordnung, aber etwas sperrig. Scheint, als ob es einen besseren Weg geben sollte.
Gibt es einen Weg mit Listenverständnis oder einer Funktion von zip, die ich vermisst habe?
Keine Importe bevorzugt .

Top