Python Как объединить одни и те же ключи нескольких словарей в одном списке - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть требование в Python сгруппировать указанный ключ c (в список) словарей из того же списка. Я нашел много примеров слияния разных словарей / списков, но не могу найти ничего для своего варианта использования. Пожалуйста, помогите мне, если вы знаете, как этого добиться.

Например, у меня есть список с подробностями события ниже:

[
{'event_title': '2020 Oracle Conference', 'event_type': 'Conference', 'startdate': '02-08-2020', 'end_date': '02-10-2020', 'location': 'Los Angeles'}, 

{'event_title': '2020 Oracle Conference', 'event_type': 'Conference', 'startdate': '02-08-2020', 'end_date': '02-10-2020', 'location': 'London'}, 

{'event_title': '2020 Oracle Conference', 'event_type': 'Conference', 'startdate': '02-08-2020', 'end_date': '02-10-2020', 'location': 'Singapore'}, 

{'event_title': '2020 Oracle Conference', 'event_type': 'Conference', 'startdate': '02-08-2020', 'end_date': '02-10-2020', 'location': 'Sydney'}, 

{'event_title': '2021 Python Conference', 'event_type': 'Conference', 'startdate': '01-08-2021', 'end_date': '01-10-2021', 'location': 'New York'}, 

{'event_title': '2021 Python Conference', 'event_type': 'Conference', 'startdate': '01-08-2021', 'end_date': '01-10-2021', 'location': 'Hongkong'}, 

{'event_title': '2021 MongoDB Conference', 'event_type': 'Conference', 'startdate': '02-08-2021', 'end_date': '02-10-2021', 'location': 'San Francisco'}, 
]

Желаемый результат в JSON: Заметьте, что «местоположение» теперь объединено, чтобы объединить города из нескольких словарей одного и того же списка.

{"event_title": "2020 Oracle Conference", "event_type": "Conference", "start_date": "02-08-2020", "end_date": "02-10-2020", "location": ["Los Angeles","London","Singapore","Sydney"]},

{"event_title": "2021 Python Conference", "event_type": "Conference", "start_date": "01-08-2021", "end_date": "01-10-2021", "location": ["New York","Hongkong"]},

{"event_title": "2021 MongoDB Conference", "event_type": "Conference", "start_date": "02-08-2021", "end_date": "02-10-2021", "location": ["San Francisco"]}

Я пробовал ниже, но это объединяет только 2 Dict. У меня есть список, который динамически создается с 50 или более словарями. Как мне добиться с помощью динамических c словарей?

# first dictionary
dict1 = {  'event_title': '2020 Oracle Conference', 'event_type': 'Conference', 'startdate': '02-08-2020', 'end_date': '02-10-2020', 'location': 'Los Angeles' }

# second dictionary
dict2 = {'event_title': '2020 Oracle Conference', 'event_type': 'Conference', 'startdate': '02-08-2020', 'end_date': '02-10-2020', 'location': 'London' }


dict3 = {**dict1, **dict2}
for key, value in dict3.items():    
    if key == 'location' in dict1 and key =='location' in dict2:
        dict3[key] = [value , dict1[key]]
print(dict3)

вывод:

{'event_title': '2020 Oracle Conference', 'event_type': 'Conference', 'startdate': '02-08-2020', 'end_date': '02-10-2020', 'location': ['London', 'Los Angeles']}

Спасибо.

...