Добавление в список строки значений словаря

#python #dictionary

Вопрос:

У меня есть набор данных под названием подписки, который представляет собой список словарей:

 subscriptions = [
#dict A
{"key1":"value",
..
"keyX":"value"},
#dict B
{"key1":"value",
..
"keyX":"value"},
]
 

Для каждого из этих диктов у меня есть подмножество данных «ресурсы», которое также представляет собой список словарей:

 resources = [
#dict A
{"key1":"value",
..
"keyX":"value"},
#dict B
{"key1":"value",
..
"keyX":"value"},
]
 

Для каждого элемента в подписках ключи словаря могут существовать или нет, но ключи известны.
То же самое касается ресурсов.

Я пытаюсь добавить данные из этих двух в список master_data для записи в csv

 for sub in subscriptions:
 for res in resources:
   master_data.append([sub.get('key')....res.get('key')])

with open("out.csv","w") as out_file:
 writer = csv.writer(out_file, delimiter=",")
 writer.writerows(master_data)
 

Есть ли более чистый способ сделать это, а не получать каждое значение, потому что в общей сложности у меня есть 44 элемента в строке, добавляемых в master_data.

Редактировать:

Согласно запросу, информация о ключах:

 Subscription Keys:
dict_keys(['name', 'trial', 'status', 'startDate', 'serviceGate', 'lastBillDate', 'nextBillDate', 'autoRenewDate', 'serviceStatus', 'expirationDate', 'subscriptionId', 'autoRenewEnabled', 
'billingTerms.autoRenewal.days', 'billingTerms.autoRenewal.type', 'billingTerms.billingModel', 'billingTerms.freezePrices', 'billingTerms.billingPeriod.unit', 'billingTerms.billingPeriod.duration', 'subscriptionPeriod.unit', 'subscriptionPeriod.duration', 'account.id'])

Resource Keys:
dict_keys(['resource.resourceId', 'resource.MPNumber', 'resource.internalResourceId', 'resource.status', 'resource.unitOfMeasureId', 'resource.measurable', 'resource.showInCustomerPanel', 
'resource.allowToModifyInTrial', 'resource.included', 'resource.additional', 'resource.ordered', 'resource.min', 'resource.max', 'resource.vendorSubscriptionId', 'resource.usage', 'resource.consumptionType', 'resource.name.en_US', 'resource.name.fr_FR', 'resource.name.nl_NL', 'resource.unitOfMeasure.en_US', 'resource.unitOfMeasure.fr_FR', 'resource.unitOfMeasure.nl_NL']) 
 

Комментарии:

1. Значит, и ресурсы, и подписки имеют одинаковые ключи? Пожалуйста, добавьте более содержательный пример ваших данных

2. Нет, ресурсы и подписки имеют отдельные ключи. Я отредактирую его в ближайшее время.

3. Ваши вложенные циклы создают перекрестный продукт между двумя списками. Если вы намеревались обрабатывать их параллельно, используйте for sub, res in zip(subscriptions, resources)

Ответ №1:

Используйте понимание списка для каждого словаря.

 master_data.append([sub.get(key) for key in subscription_keys]   [res.get(key) for key in resource_keys])