it-swarm.com.de

Auswählen von Elementen eines Python-Wörterbuchs mit einem bestimmten Wert

Ich muss Elemente eines Wörterbuchs mit einem bestimmten Wert oder mehr auswählen. Mir ist bekannt, wie dies mit Listen geschieht, Liste der Elemente in der Liste zurückgeben, die größer als ein Wert sind.

Ich bin mir jedoch nicht sicher, wie ich das in etwas funktionales für ein Wörterbuch übersetzen kann. Ich habe es geschafft, die Tags zu erhalten, die (ich denke) Werten entsprechen, die größer oder gleich einer Zahl sind, aber die folgenden Angaben ergeben nur die Tags:

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

.items() gibt (key, value)-Paare zurück, mit denen Sie eine gefilterte dict mithilfe eines list-Verständnisses rekonstruieren können, das in den dict()-Konstruktor eingespeist wird, der ein iterierbares von (key, value)-Tupeln aka akzeptiert. unser Listenverständnis:

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

Wenn Sie Ihren Code nicht mit Python älter als Version 2.7 ausführen möchten, finden Sie weitere Informationen unter @opatut answer unter Verwendung von "Dict Comprehensions" :

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

Während nmaiers Lösung mein Weg war, müsste man feststellen, dass es seit Python 2.7+ eine " dict verstehen " -Syntax gibt:

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

Gefunden hier: Erstellen Sie ein Wörterbuch mit Listenverständnis in Python . Ich fand dies durch googeln "Python-Wörterbuchliste Verständnis", Top-Beitrag.

Erläuterung

  • { .... } beinhaltet das Diktierverständnis
  • k:v welche Elemente zum Diktat hinzugefügt werden sollen
  • for (k,v) in dict.items() iteriert über alle Tupel (Schlüssel-Wert-Paare) des Diktats
  • if v > something eine Bedingung, die für jeden einzufügenden Wert gelten muss
9
opatut

Sie möchten dict[i] nicht dict.values(). dict.values() gibt die gesamte Liste der Werte zurück, die im Wörterbuch enthalten sind.

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