Ich habe ein Wörterbuch d = {1:-0.3246, 2:-0.9185, 3:-3985, ...}
.
Wie extrahiere ich alle Werte von d
in eine Liste eintragen l
?
Naveen C.
Ich habe ein Wörterbuch d = {1:-0.3246, 2:-0.9185, 3:-3985, ...}
.
Wie extrahiere ich alle Werte von d
in eine Liste eintragen l
?
Pierre Bourdon
Wenn Sie nur die Wörterbuchtasten benötigen 1
, 2
Und 3
verwenden: your_dict.keys()
.
Wenn Sie nur die Wörterbuchwerte benötigen -0.3246
, -0.9185
Und -3985
verwenden: your_dict.values()
.
Wenn Sie sowohl Schlüssel als auch Werte benötigen, verwenden Sie Folgendes: your_dict.items()
was eine Liste von Tupeln zurückgibt [(key1, value1), (key2, value2), ...]
.
Wenn Sie Python 3 verwenden, sollten Sie Folgendes verwenden list(your_dict.values())
um eine Liste zu erhalten (und kein dict_values-Objekt).
– Matthias Braun
13. Mai 2013 um 0:09
Verwenden values()
>>> d = {1:-0.3246, 2:-0.9185, 3:-3985}
>>> d.values()
<<< [-0.3246, -0.9185, -3985]
Für Python 3 benötigen Sie:
list_of_dict_values = list(dict_name.values())
Vielen Dank, dass Sie diese Methode erwähnt haben list()
wird gebraucht
– Md. Sabbir Ahmed
17. Mai 2020 um 23:42 Uhr
Dies ist für den Zugriff auf die Elemente über Indizes zwingend erforderlich
– Pe Dro
8. September 2021 um 17:11 Uhr
Eigentlich, dict_name.values().tolist
Sollte schneller sein, wenn Sie ein 1D-Array haben, überprüfen Sie dies hier
– Hozayfa El Rifai
23. September 2021 um 12:20 Uhr
@hozayfa-el-rifai Das ist nur für Numpy. {}.values().tolist()
funktioniert nicht.
– Ted Brownlow
2. Juli 2022 um 17:08 Uhr
@TedBrownlow bin mir nicht sicher, was ich hier beweisen wollte, aber ja, du hast recht!
– Hozayfa El Rifai
19. September 2022 um 9:12 Uhr
Wenn Sie alle Werte möchten, verwenden Sie Folgendes:
dict_name_goes_here.values()
Wenn Sie alle Schlüssel möchten, verwenden Sie Folgendes:
dict_name_goes_here.keys()
WENN Sie alle Elemente (sowohl Schlüssel als auch Werte) möchten, würde ich Folgendes verwenden:
dict_name_goes_here.items()
Michael Dorner
Für verschachtelte Diktate, Listen von Diktaten und Diktate aufgelisteter Diktate können Sie Folgendes verwenden:
from typing import Iterable
def get_all_values(d):
if isinstance(d, dict):
for v in d.values():
yield from get_all_values(v)
elif isinstance(d, Iterable) and not isinstance(d, str): # or list, set, ... only
for v in d:
yield from get_all_values(v)
else:
yield d
Ein Beispiel:
d = {'a': 1, 'b': {'c': 2, 'd': [3, 4]}, 'e': [{'f': 5}, {'g': set([6, 7])}], 'f': 'string'}
list(get_all_values(d)) # returns [1, 2, 3, 4, 5, 6, 7, 'string']
Vielen Dank an @vicent für den Hinweis, dass dies auch bei Zeichenfolgen der Fall ist Iterable
! Ich habe meine Antwort entsprechend aktualisiert.
PS: Ja, ich liebe yield
. 😉
Das ist ziemlich genau das, was ich gesucht habe. Beachten Sie, dass Zeichenfolgen auch iterierbar sind. In meinem Anwendungsfall handelte es sich bei den Werten in meinem Wörterbuch ebenfalls um Zeichenfolgen, sodass ich auf einen Fehler bezüglich der erreichten rekursiven Tiefe stieß. Um das Problem zu beheben, habe ich „def get_all_values(d): if isinstance(d, dict): for v in d.values(): yield from get_all_values(v) elif isinstance(d, typing.Iterable)“ und nicht „isinstance(“ ausgeführt. d, str): # oder list, set, … nur für v in d: yield from get_all_values(v) else: yield d “`
– Vincent
28. November 2022 um 21:06 Uhr
Vielen Dank für den Hinweis auf dieses Problem. Du hast vollkommen recht! Ich habe meine Antwort aktualisiert!
– Michael Dorner
29. November 2022 um 8:22 Uhr
David Heffernan
Ruf den values()
Methode auf dem Diktat.
Das ist ziemlich genau das, was ich gesucht habe. Beachten Sie, dass Zeichenfolgen auch iterierbar sind. In meinem Anwendungsfall handelte es sich bei den Werten in meinem Wörterbuch ebenfalls um Zeichenfolgen, sodass ich auf einen Fehler bezüglich der erreichten rekursiven Tiefe stieß. Um das Problem zu beheben, habe ich „def get_all_values(d): if isinstance(d, dict): for v in d.values(): yield from get_all_values(v) elif isinstance(d, typing.Iterable)“ und nicht „isinstance(“ ausgeführt. d, str): # oder list, set, … nur für v in d: yield from get_all_values(v) else: yield d “`
– Vincent
28. November 2022 um 21:06 Uhr
Vielen Dank für den Hinweis auf dieses Problem. Du hast vollkommen recht! Ich habe meine Antwort aktualisiert!
– Michael Dorner
29. November 2022 um 8:22 Uhr
Stephen Rauch
Wenn Sie alle Werte möchten, verwenden Sie Folgendes:
dict_name_goes_here.values()