2016-02-23 2 views
1

Я новичок в разработчике Python. Ниже мой тестовый код:Как получить пару ключей и значений из списка словаря в python 3

my_dict = [{'IS_DUMMY': False, 'FACT_CURRENCY': '$', 'RETAILER_NAME': 'kohls', 'RETAILER_KEY': 5, 'ACTIVE': 'Y'},{'IS_DUMMY': False, 'FACT_CURRENCY': '$', 'RETAILER_NAME': 'target', 'RETAILER_KEY': 100, 'ACTIVE': 'Y'}] 

column_list = [{'SOURCE_COLUMN':'FACT_CURRENCY', 'TARGET_COLUMN':'CURRENCY'},{'SOURCE_COLUMN':'RETAILER_NAME', 'TARGET_COLUMN':'RETAILER'}, 
{'SOURCE_COLUMN':'RETAILER_KEY', 'TARGET_COLUMN':'KEY'},{'SOURCE_COLUMN':'ACTIVE', 'TARGET_COLUMN':'ACTIVE'}] 

Вот мой вопрос:. 1. Мне нужно найти, если значение SOURCE_COLUMN из column_list доступен в my_dict или нет (я могу найти, что) 2. Мне нужно создать список dict, который содержит только совпадающее значение из column_list в my_dict. так что мой новый список Словаре будет выглядеть следующим образом:

my_new_dict = [{'FACT_CURRENCY': '$', 'RETAILER_NAME': 'kohls', 'RETAILER_KEY': 5, 'ACTIVE': 'Y'},{'FACT_CURRENCY': '$', 'RETAILER_NAME': 'target', 'RETAILER_KEY': 100, 'ACTIVE': 'Y'}] 

ответ

1

Для того, чтобы ваши вопросы более удобным для чтения, вы должны поставить код на дополнительные линии и отступа от 4 пробела, например:

# your data: 
my_dicts = [{'IS_DUMMY': False, 'FACT_CURRENCY': '$', 'RETAILER_NAME': 'kohls', 'RETAILER_KEY': 5, 'ACTIVE': 'Y'},{'IS_DUMMY': False, 'FACT_CURRENCY': '$', 'RETAILER_NAME': 'target', 'RETAILER_KEY': 100, 'ACTIVE': 'Y'}] 
column_list = [{'SOURCE_COLUMN':'FACT_CURRENCY', 'TARGET_COLUMN':'CURRENCY'},{'SOURCE_COLUMN':'RETAILER_NAME', 'TARGET_COLUMN':'RETAILER'}, {'SOURCE_COLUMN':'RETAILER_KEY', 'TARGET_COLUMN':'KEY'},{'SOURCE_COLUMN':'ACTIVE', 'TARGET_COLUMN':'ACTIVE'}] 

# seems like we only need the SOURCE_COLUMN entries from the column_list 
source_cols = [col['SOURCE_COLUMN'] for col in column_list] 

# iterate over my_dicts and create a new dictionary for each my_dict using 
new_dicts = [] 
for my_dict in my_dicts: 
    new_dicts.append({col:my_dict[col] for col in source_cols if col in my_dict}) 

Также см PEP 274 -- Dict Comprehensions

+0

спасибо! – Pradeep

0

Другой способ сделать new_dicts бы через список понимания:

new_dicts = [{col:my_dict[col] for col in source_cols if col in my_dict} for my_dict in my_dicts] 

если вам нравится ответ Шубита, подумайте о его повышении :)

+0

new_dicts.append ({col ['SOURCE_COLUMN']: my_dict [col ['TARGET_COLuUMN'] для col в столбце_list, если col ['TARGET_COLUMN'] в my_dict}) – Shubit

+0

@ k-menyah Вы можете использовать понимание списка, но для удобства чтения Я бы предпочел не делать этого, даже так мне нравится этот компактный синтаксис :) – Shubit

+0

Спасибо. Есть ли способ, который я могу обновить исходный столбец целевым столбцом из column_list в новом dict? @Shubit – Pradeep

Смежные вопросы