С набором данных из произвольного набора списков (или диктов или другого итератора) я хочу создать новый список или кортеж, в котором будут все первые записи, затем все вторые и т. д., как hstack .
Если у меня есть известный набор данных, я могу объединить их вместе следующим образом:
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]
Это нормально, но это немного громоздко. Похоже, должен быть лучший способ.
Есть ли способ понимания списка или какая-то функция zip, которую я пропустил?
Импорт не предпочтителен. .
С набором данных из произвольного набора списков (или диктов или другого итератора) я хочу создать новый список или кортеж, в котором будут все первые записи, затем все вторые и т. д., как hstack . Если у меня есть известный набор данных, я могу объединить их вместе следующим образом: [code]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) [/code] Но что, если я не знаю, сколько записей (или ключей) в словаре? Для обработки произвольного набора итераторов Я пробовал: [code]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]) [/code] А также: [code]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) [/code] Но оба они сохраняют тот же порядок, который я мог бы получить при сложении последовательностей. Мне удалось заставить его работать: [code]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] [/code] Это нормально, но это немного громоздко. Похоже, должен быть лучший способ. Есть ли способ понимания списка или какая-то функция zip, которую я пропустил? Импорт не предпочтителен. .