Получить ключи, которые также находятся в значении defaultdict - PullRequest
1 голос
/ 05 апреля 2019

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

Например,

a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]} должно давать 1 и 3, поскольку эти значения были в значении, т.е. 1 было в 1,3,5

Я написал этот код, но он не печатает дубликат ключа:

c = set():
for k, v in a.items():
if a[k] == v
c.add(k)

Но он не работает, я думаю, потому что он не сравнивает КАЖДЫЙ отдельный элемент в списке, то есть 1: [1,3,5]

Как исправить?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Ты почти там; вам просто нужно немного изменить свое условие:

a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]}
c = set()
for k, v in a.items():
    if k in v:
        c.add(k)

Это может быть упрощено до понимания набора:

a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]}
c = {k for k, v in a.items() if k in v}
0 голосов
/ 05 апреля 2019

Вы можете использовать понимание вложенного набора, которое перебирает подсписки в значениях dict и выводит элементы списка, которые являются ключами dict:

{k for l in a.values() for k in l if k in a}

Возвращает:

{1, 3}
...