Подтвердить что ты не робот

Сохранять все записи, за исключением одного ключа python

У меня есть словарь python. Чтобы дать контекст, я пытаюсь написать свой собственный простой модуль проверки перекрестных ссылок.

Так что в основном я хочу получить все значения, кроме указанных ключей. И в зависимости от ввода, он возвращает все значения из словаря, кроме тех, которые были предоставлены.

Итак, если вход 2 и 5, то выходные значения не имеют значений от клавиш 2 и 5?

4b9b3361

Ответ 1

for key, value in your_dict.items():
    if key not in your_blacklisted_set:
        print value

красота заключается в том, что этот пример псевдокода является допустимым кодом python.

он также может быть выражен как понимание списка:

resultset = [value for key, value in your_dict.items() if key not in your_blacklisted_set]

Ответ 2

Просто для удовольствия с наборами

keys = set(dict.keys())
excludes = set([...])

for key in keys.difference(excludes):
    print dict[key]

Ответ 3

С учетом словаря

d = {
     2: 2, 5: 16, 6: 5,
     7: 6, 11: 17, 12: 9,
     15: 18, 16: 1, 18: 16,
     19: 17, 20: 10
     }

то простой пример понимания достигнет желаемого

[v for k,v in d.iteritems() if k not in (2,5)]

В этом примере перечислены все значения не с ключами {2,5}

например, O/P вышеупомянутого понимания

[5, 6, 1, 17, 9, 18, 1, 16, 17, 10]

Ответ 4

keys = ['a', 'b']
a_dict = {'a':1, 'b':2, 'c':3, 'd':4}
[a_dict.pop(key) for key in keys]

После выталкивания ключей, которые нужно отменить, a_dict сохранит те, которые вы после.

Ответ 5

Кроме того, в качестве понимания списка с использованием наборов:

d = dict(zip(range(9),"abcdefghi"))
blacklisted = [2,5]
outputs = [d[k] for k in set(d.keys())-set(blacklisted)]

Ответ 6

Как насчет чего-то в следующих строках:

In [7]: d = dict((i,i+100) for i in xrange(10))

In [8]: d
Out[8]: 
{0: 100,
 1: 101,
 2: 102,
 3: 103,
 4: 104,
 5: 105,
 6: 106,
 7: 107,
 8: 108,
 9: 109}

In [9]: exc = set((2, 5))

In [10]: for k, v in d.items():
   ....:     if k not in exc:
   ....:         print v
   ....:         
   ....:         
100
101
103
104
106
107
108
109