Selección de elementos de un diccionario de Python mayor que un cierto valor

Necesito seleccionar elementos de un diccionario de cierto valor o mayor. Soy consciente de cómo hacer esto con listas, Devolver lista de elementos en lista mayor que algún valor .

Pero no estoy seguro de cómo traducir eso en algo funcional para un diccionario. Me las arreglé para obtener las tags que corresponden (creo) a valores mayores o iguales a un número, pero al usar las siguientes solo se dan las tags:

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

.items() devolverá (key, value) pares (key, value) que puede usar para reconstruir un dict filtrado utilizando una lista de comprensión que se alimenta al constructor dict() , que aceptará una iterable de tuplas (key, value) alias. nuestra lista de comprensión:

 >>> 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} 

Si no le importa ejecutar su código en Python anterior a la versión 2.7, vea la respuesta de @opatut usando ” dictados de dictado ” :

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

Si bien la solución de nmaier hubiera sido mi camino, observe que desde Python 2.7+ ha habido una syntax de ” comprensión de dictado “:

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

Encontrado aquí: Crea un diccionario con la lista de comprensión en Python . Encontré esto buscando en Google la “lista de comprensión del diccionario de python”, publicación superior.

Explicación

  • { .... } incluye la comprensión del dict
  • k:v qué elementos añadir al dict.
  • for (k,v) in dict.items() esto se repite en todas las tuplas (pares clave-valor) del dict
  • if v > something una condición que debe aplicarse en cada valor que se va a incluir

Usted quiere dict[i] no dict.values() . dict.values() devolverá la lista completa de valores que están en el diccionario.

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