Выбор элементов словаря 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]