2016-04-21 5 views
1

Я новичок в python, поэтому, пожалуйста, несите меня, когда я узнаю.Фильтрация ключей не разделяется между двумя вложенными словарями

У меня есть два defaultdicts, один с вложенными значений:

d1 = defaultdict(dd_list) 
d1 = {'a': {'b1': 12, 'c21': 41}, 'ff': {'h1': 2, 'b1': 32}} 

d2 = defaultdict(dd_list) 
d2 = {'a': 22, 'b1': 77, 'g8': 10, 'h1': 37} 

Я хотел бы, чтобы отфильтровать d1 вернуть только те пары ключ-значение для ключей, которые присутствуют в d2:

{'a': {'b1': 12}, 'ff': {'b1': 32, 'h1': 2}} 

Я попытался использовать описанный подход here, но не смог его адаптировать к этой ситуации.

Спасибо заранее!

ответ

1

Вы можете решить с помощью вложенного словаря понимания:

>>> d1 = {'a': {'b1': 12, 'c21': 41}, 'ff': {'h1': 2, 'b1': 32}} 
>>> d2 = {'a': 22, 'b1': 77, 'g8': 10, 'h1': 37} 
>>> 
>>> print({key: {inner_key: inner_value for inner_key, inner_value in value.items() if inner_key in d2} 
...  for key, value in d1.items()}) 
{'a': {'b1': 12}, 'ff': {'h1': 2, 'b1': 32}} 

В этом состоянии, хотя, решение не масштабируется для произвольного nestedness уровня.

+0

Спасибо, это ответили на мой вопрос и помогли мне лучше понять понимание списка. – Archimeow

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

  • Нет связанных вопросов^_^