Bagaimana cara mencetak pasangan kunci-nilai kamus dengan python


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)

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'


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)


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

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

for key, value in d.iteritems():
    print(key, value)

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


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

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]

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'))
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.