Мой текущий список:список объединения словарей, которые имеют список инициализации
my_list = [
{'id': 1, 'val': [6]},
{'id': 2, 'val': [7]},
{'id': 3, 'val': [8]},
{'id': 2, 'val': [9]},
{'id': 1, 'val': [10]},
]
Желаемый результат:
my_list = [
{'id': 1, 'val': [6, 10]},
{'id': 2, 'val': [7, 9]},
{'id': 3, 'val': [8]},
]
, что я пытался до сих пор:
my_new_list = []
id_set = set()
for d in my_list:
if d['id'] not in id_set:
id_set.add(d['id'])
temp = {'id': d['id'], 'val': d['val']}
my_new_list.append(temp)
else:
# loop over the new list and find the dict which already have d['id'] and update by appending value
# but this is not efficient
любой другой более эффективный подход или может быть некоторая встроенная функция, о которой я не знаю.
PS: Заказ важен!
Учитывая новый список будет иметь уникальное значение для 'id', вы можете использовать словарь вместо с' id' в качестве ключа. Таким образом, вам не нужно перебирать новый список, вы можете получить к нему доступ по идентификатору напрямую. – spectras
Важен ли список выходных данных? – schwobaseggl
@schwobaseggl: да, порядок важен, поэтому я не использовал словарь, как упомянуто y spectras – Wendy