Wie extrahiere ich alle Werte aus einem Wörterbuch in Python?

Lesezeit: 3 Minuten

Benutzeravatar von Naveen C
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?

Benutzer-Avatar von Pierre Bourdon
Pierre Bourdon

Wenn Sie nur die Wörterbuchtasten benötigen 1, 2Und 3 verwenden: your_dict.keys().

Wenn Sie nur die Wörterbuchwerte benötigen -0.3246, -0.9185Und -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()

Benutzeravatar von Michael Dorner
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 Heffernans Benutzeravatar
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

Benutzer-Avatar von Stephen Rauch
Stephen Rauch

Wenn Sie alle Werte möchten, verwenden Sie Folgendes:

dict_name_goes_here.values()

1450210cookie-checkWie extrahiere ich alle Werte aus einem Wörterbuch in Python?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy