В общем, поискав в гугле, какого-то красивого решения не нашел - написал свое.
dcitwitter = {
'dotcominfoway.com':
{'twitter':
{
'twitter-dotcominfoway.com-0.png':
{
'content': 'A proper sales process\n\n#DotComInfoway #Sales #SalesTeam #BusinessDevelopmentProcess #SalesProcedure #Closure #Customers #B2B #SalesCycle #Marketing #B2BSales #SalesFunnel #SalesStrategy',
'fullPath': 'C:\\Users\\Ilya\\Desktop\\Programming\\Work\\FITTL\\screenshots\\twitter-dotcominfoway.com-0.png',
'date': None
},
'twitter-dotcominfoway.com-1.png':
{
'content': '2022 Image size specifications for different social media networks \n\n#DotComInfoway #ImageSize #SocialMediaMarketing #SMMagency #SocialMediaGuidelines #SocialMedia2022 #Facebook #Twitter #LinkedIn #Instagram',
'fullPath': 'C:\\Users\\Ilya\\Desktop\\Programming\\Work\\FITTL\\screenshots\\twitter-dotcominfoway.com-1.png',
'date': None
},
}
}
}
dciinst = {
'dotcominfoway.com':
{
'instagram':
{
'instagram-dotcominfoway.com-0.png':
{
'content': 'dotcominfowaydciA proper sales process#DotComInfoway #Sales #SalesTeam #BusinessDevelopmentProcess #SalesProcedure #Closure #Customers #B2B #SalesCycle #Marketing #B2BSales #SalesFunnel #SalesStrategy22h',
'fullPath': 'C:\\Users\\Ilya\\Desktop\\Programming\\Work\\FITTL\\screenshots\\instagram-dotcominfoway.com-0.png',
'date': '12.02.2022'
},
'instagram-dotcominfoway.com-1.png':
{
'content': 'dotcominfowaydci2022 Image size specifications for different social media networks #DotComInfoway #ImageSize #SocialMediaMarketing #SMMagency #SocialMediaGuidelines #SocialMedia2022 #Facebook #Twitter #LinkedIn #Instagram1d',
'fullPath': 'C:\\Users\\Ilya\\Desktop\\Programming\\Work\\FITTL\\screenshots\\instagram-dotcominfoway.com-1.png',
'date': '11.02.2022'
}
}
}
}
amazix = {
'amazix.com':
{'telegram':
{0:
{'content': 'Самолет украинской авиакомпании SkyUp, летевший в Киев из Португалии, не пустили в воздушное пространство Украины, ему пришлось сесть в Кишиневе. Для всех 175 пассажиров организован трансфер в Киев.\n\nhttps://skyup.aero/ru/news/komentar-skyup-shodo-posadki-rejsa-pq0902-v-kishinevi_419\n\nДепутат Верховной рады Алексей Гончаренко сообщил, что "скорее всего с завтрашнего дня с 16:00 по Киеву воздушное движение в Украине будет приостановлено". \n\nhttps://t.me/oleksiihoncharenko/10169\n\nНакануне об остановке полетов на Украину сообщила нидерландская авиакомпания KLM. Голландские власти присвоили Украине красный уровень опасности.\n\nhttps://www.telegraaf.nl/nieuws/60600772/klm-stopt-met-vliegen-op-oekraine\n\nЕсли верить газете Politico, на этой неделе президент США Джо Байден сообщил союзникам, что Россия может вторгнуться на Украину 16 февраля. Российская сторона утверждает, что не собирается ни на кого нападать, и объясняет скопление войск у границы учениями. Тем не менее власти нескольких десятков стран рекомендовали своим гражданам покинуть Украину.',
'date': '13.02.2022'},
1: {'content': 'России "насрать на санкции Запада". Такое заявление сделал посол России в Швеции Виктор Татаринцев.\n\nhttps://www.aftonbladet.se/nyheter/a/RrnBR5/ryssland-kan-inte-acceptera-att-sverige-gar-med-i-nato',
'date': '13.02.2022'},
}}}
def merge(companyDicts: List[dict], baseKeys: List[str], socialMedias: List[str]):
data = {}
for key in baseKeys:
data[key] = {}
for arg in companyDicts:
for socialMedia in socialMedias:
for key in baseKeys:
try:
arg[key][socialMedia]
except KeyError:
continue
data[key][socialMedia] = arg[key][socialMedia]
return data
print(
json.dumps(
merge([dcitwitter, dciinst, amazix], baseKeys=['dotcominfoway.com', 'amazix.com'], socialMedias=['instagram', 'twitter', 'telegram', 'facebook']),
indent=4
)
)
При желании, можно этот код заменить под ваши нужды, думаю основная суть понятна.