Выбор элементов словаря Python выше определенного значения

Мне нужно выбрать элементы словаря определенного значения или больше. Я знаю, как это сделать со списками, Вернуть список элементов в списке, превышающем некоторое значение.

Но я не уверен, как перевести это во что-то функциональное для словаря. Мне удалось получить теги, которые соответствуют (я думаю) значениям, большим или равным числу, но используя следующее, дает только теги:

[i for i in dict if dict.values() >= x]

Ответы

Ответ 1

.items() возвратит пары (key, value), которые вы можете использовать для восстановления отфильтрованного dict с помощью list comprehension, который является фидом в конструктор dict(), который примет итерабельность (key, value) tuples aka. наше понимание списка:

>>> d = dict(a=1, b=10, c=30, d=2)
>>> d
{'a': 1, 'c': 30, 'b': 10, 'd': 2}
>>> d = dict((k, v) for k, v in d.items() if v >= 10)
>>> d
{'c': 30, 'b': 10}

Если вам не нужен запуск кода на python старше версии 2.7, см. @opatut answer с помощью "диктовки" :

{k:v for (k,v) in dict.items() if v > something}

Ответ 2

В то время как решение nmaier было бы моим путем, обратите внимание на то, что с python 2.7+ был " dict comprehension":

{k:v for (k,v) in dict.items() if v > something}

Найдено здесь: Создайте словарь со списком в Python. Я нашел это путем googling "понимание списка словарей python", верхний пост.

Объяснение

  • { .... } включает понимание dict
  • k:v какие элементы добавить в dict
  • for (k,v) in dict.items() это итерация по всем кортежам (пары ключ-значение) dict
  • if v > something условие, которое должно применяться для каждого значения, которое должно быть включено

Ответ 3

Вы хотите dict[i] не dict.values(). dict.values() вернет весь список значений, которые находятся в словаре.

dict = {2:5, 6:2}
x = 4
print [dict[i] for i in dict if dict[i] >= x] # prints [5]