Bagaimana cara mencetak pasangan kunci-nilai kamus dengan python

176

Saya ingin menampilkan pasangan nilai kunci dari kamus python sebagai berikut:

key1 \t value1
key2 \t value2

Saya pikir saya mungkin bisa melakukannya seperti ini:

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

tapi jelas bukan itu yang terjadi keys()dan values()jangan bertengkar.

oaklander114
sumber
kemungkinan duplikat Python: bagaimana cara mencetak kunci kamus?
Mauro Baraldi

Jawaban:

327

Kode yang ada hanya perlu sedikit modifikasi. i adalah kuncinya, jadi Anda hanya perlu menggunakannya:

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

Anda juga bisa mendapatkan iterator yang berisi kunci dan nilai. Dalam Python 2, d.items()mengembalikan daftar tupel (kunci, nilai), sementara d.iteritems()mengembalikan iterator yang menyediakan hal yang sama:

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

Dalam Python 3, d.items()mengembalikan iterator; untuk mendapatkan daftar, Anda harus meneruskan iterator ke list()diri Anda sendiri.

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

Sedikit intro ke kamus

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')

Kunci cetak, nilai metode satu

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

Metode lain

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

Anda bisa mendapatkan kunci menggunakan iter

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

Anda bisa mendapatkan nilai kunci kamus menggunakan get(key, [value]):

d.get('a')
'apple'

Jika kunci tidak ada dalam kamus, ketika nilai default diberikan, akan mengembalikan nilai.

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

Atau, untuk Python 3:

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

Kamus:

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

Solusi satu baris lainnya:

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

Keluaran:

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

(Tapi, karena tidak ada yang menyarankan sesuatu seperti ini sebelumnya, saya curiga itu bukan praktik yang baik)

Nara Begnini
sumber
1
Saya pikir ini pasti jawaban yang lebih diterima! ... saya merasa jawaban ini mendemonstrasikan jenis kekuatan dalam python yang sebagian besar diabaikan ... Anda juga dapat melakukan yang berikut untuk menghilangkan '()' ... print(*[f"{': '.join(map(str,v))}" for i,v in enumerate(list(d.items()))], sep='\n').... atau Anda dapat melakukan yang berikut untuk dengan mudah mencetak indeks # jugaprint(*[f"[{i}] {': '.join(map(str,v))}" for i,v in enumerate(list(d.items()))], sep='\n')
rumah kaca
4
for key, value in d.iteritems():
    print key, '\t', value
Mauro Baraldi
sumber
4

Anda dapat mengakses kunci dan / atau nilai-nilai Anda dengan memanggil item () pada kamus Anda.

for key, value in d.iteritems():
    print(key, value)
goulon
sumber
1
Anda mengatakan items()di baris pertama teks Anda dan kode yang Anda masukkan iteritems(). Dalam python3x cara yang benar adalah dict.items()seperti yang Anda katakan dulu.
Joel Carneiro
3

Jika Anda ingin mengurutkan output dengan kunci dikt Anda dapat menggunakan paket koleksi .

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

Ini bekerja pada python 3

paolof89
sumber
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
sumber
1

Selain cara yang telah disebutkan .. dapat menggunakan 'viewitems', 'viewkeys', 'viewvalues'

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

Atau

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

atau menggunakan itemgetter

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

Kamus sederhana:

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

Untuk mencetak pasangan tertentu (kunci, nilai) dengan Python 3 (pasangan pada indeks 1 dalam contoh ini):

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

Keluaran:

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

Berikut ini adalah solusi satu liner untuk mencetak semua pasangan dalam sebuah tuple:

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

Keluaran:

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