Wie drucke ich die Schlüssel-Wert-Paare eines Wörterbuchs in Python?

175

Ich möchte meine Schlüsselwertpaare als solches aus einem Python-Wörterbuch ausgeben:

key1 \t value1
key2 \t value2

Ich dachte, ich könnte es vielleicht so machen:

for i in d:
    print d.keys(i), d.values(i)

aber offensichtlich ist das nicht so wie das keys()und values()nimm kein Argument.

oaklander114
quelle
Mögliches Duplikat von Python: Wie drucke ich den Schlüssel eines Wörterbuchs?
Mauro Baraldi

Antworten:

324

Ihr vorhandener Code muss nur ein wenig angepasst werden. i ist der Schlüssel, also müssten Sie ihn nur verwenden:

for i in d:
    print i, d[i]

Sie können auch einen Iterator erhalten, der sowohl Schlüssel als auch Werte enthält. Gibt in Python 2 d.items()eine Liste von (Schlüssel-, Wert-) Tupeln zurück, während d.iteritems()ein Iterator zurückgegeben wird, der dasselbe bereitstellt:

for k, v in d.iteritems():
    print k, v

Gibt in Python 3 d.items()den Iterator zurück. Um eine Liste zu erhalten, müssen Sie den Iterator an sich list()selbst übergeben.

for k, v in d.items():
    print(k, v)
chepner
quelle
60

Eine kleine Einführung in das Wörterbuch

d={'a':'apple','b':'ball'}
d.keys()  # displays all keys in list
['a','b']
d.values() # displays your values in list
['apple','ball']
d.items() # displays your pair tuple of key and value
[('a','apple'),('b','ball')

Druckschlüssel, Werte Methode eins

for x in d.keys():
    print x +" => " + d[x]

Eine andere Methode

for key,value in d.items():
    print key + " => " + value

Sie können Schlüssel mit erhalten iter

>>> list(iter(d))
['a', 'b']

Sie können den Wert des Schlüsseles des Wörterbuchs erhalten, indem Sie get(key, [value]):

d.get('a')
'apple'

Wenn der Schlüssel im Wörterbuch nicht vorhanden ist, gibt der angegebene Standardwert den Wert zurück.

d.get('c', 'Cat')
'Cat'
Hackaholic
quelle
16

Oder für Python 3:

for k,v in dict.items():
    print(k, v)
Patrick Beeson
quelle
9

Das Wörterbuch:

d={'key1':'value1','key2':'value2','key3':'value3'}

Eine weitere einzeilige Lösung:

print(*d.items(), sep='\n')

Ausgabe:

('key1', 'value1')
('key2', 'value2')
('key3', 'value3')

(aber da noch niemand so etwas vorgeschlagen hat, vermute ich, dass es keine gute Praxis ist)

Nara Begnini
quelle
1
Ich denke, dies sollte definitiv eine akzeptierte Antwort sein! ... Ich glaube, diese Antwort demonstriert die Art der Macht in Python, die meistens ignoriert wird ... Sie können auch print(*[f"{': '.join(map(str,v))}" for i,v in enumerate(list(d.items()))], sep='\n')das Folgende tun , um das '()' loszuwerden ... .... oder Sie können das Folgende tun, um Drucken Sie bequem auch die Indexnummern ausprint(*[f"[{i}] {': '.join(map(str,v))}" for i,v in enumerate(list(d.items()))], sep='\n')
Gewächshaus
4
for key, value in d.iteritems():
    print key, '\t', value
Mauro Baraldi
quelle
4

Sie können auf Ihre Schlüssel und / oder Werte zugreifen, indem Sie items () in Ihrem Wörterbuch aufrufen .

for key, value in d.iteritems():
    print(key, value)
Gulon
quelle
1
Sie sagten items()in der ersten Zeile Ihres Textes und in dem Code, den Sie eingeben iteritems(). In python3x ist der richtige Weg der, dict.items()wie Sie zuerst gesagt haben.
Joel Carneiro
3

Wenn Sie die Ausgabe nach dem Diktatschlüssel sortieren möchten, können Sie das Sammlungspaket verwenden .

import collections
for k, v in collections.OrderedDict(sorted(d.items())).items():
    print(k, v)

Es funktioniert auf Python 3

paolof89
quelle
2
>>> d={'a':1,'b':2,'c':3}
>>> for kv in d.items():
...     print kv[0],'\t',kv[1]
... 
a   1
c   3
b   2
Irshad Bhat
quelle
1

Zusätzlich zu den bereits erwähnten Möglichkeiten können .. Ansichtselemente, Ansichtsschlüssel und Ansichtswerte verwendet werden.

>>> d = {320: 1, 321: 0, 322: 3}
>>> list(d.viewitems())
[(320, 1), (321, 0), (322, 3)]
>>> list(d.viewkeys())
[320, 321, 322]
>>> list(d.viewvalues())
[1, 0, 3]

Oder

>>> list(d.iteritems())
[(320, 1), (321, 0), (322, 3)]
>>> list(d.iterkeys())
[320, 321, 322]
>>> list(d.itervalues())
[1, 0, 3]

oder mit itemgetter

>>> from operator import itemgetter
>>> map(itemgetter(0), dd.items())     ####  for keys
['323', '332']
>>> map(itemgetter(1), dd.items())     ####  for values
['3323', 232]
SuperNova
quelle
0

Ein einfaches Wörterbuch:

x = {'X':"yes", 'Y':"no", 'Z':"ok"}

So drucken Sie ein bestimmtes Paar (Schlüssel, Wert) in Python 3 (Paar in Index 1 in diesem Beispiel):

for e in range(len(x)):
    print(([x for x in x.keys()][e], [x for x in x.values()][e]))

Ausgabe:

('X', 'yes')
('Y', 'no')
('Z', 'ok')

Hier ist eine Einzeiler-Lösung, um alle Paare in einem Tupel zu drucken:

print(tuple(([x for x in x.keys()][i], [x for x in x.values()][i]) for i in range(len(x))))

Ausgabe:

(('X', 'yes'), ('Y', 'no'), ('Z', 'ok'))
Fouad Boukredine
quelle