Python之字典遍历元素

本文详细介绍了在Python中遍历字典的五种常见方法,包括使用for-in语句、keys()、values()、items()方法及直接解包元组,每种方法均有代码示例和输出结果,帮助读者深入理解字典遍历的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种:for in

girl_dict= {"China": "小美", "Japan": "图多天光", "Korea": "斯密达美"}


for everyKey in girl_dict:
    print ("key:" + everyKey + "value:" + girl_dict[everyKey])

输出结果:

key:japan  value:图多天光
key:korean  value:斯密达美
key:china  value:小美

第二种:使用dict的keys()方法

dict的keys()方法返回由所有key组成的list,for in dict 等同于 for in dict.keys() 


girl_dict= {"China": "小美", "Japan": "图多天光", "Korea": "斯密达美"}


for everyKey in girl_dict.keys():
    print ("key:" + everyKey)

输出结果:

key:japan
key:korean
key:china

第三种:使用values()方法

遍历key-value中的每一个value值

girl_dict= {"China": "小美", "Japan": "图多天光", "Korea": "斯密达美"}


for every_value in girl_dict.values():
    print ("value:" + every_value)

输出结果:

value:小美
value:图多天光
value:斯密达美

第四种:使用dict的items()方法

遍历字典中的每一个key-value

girl_dict= {"China": "小美", "Japan": "图多天光", "Korea": "斯密达美"}


for everyEntry in girl_dict.items():
    print (everyEntry)

输出结果:每一个Entry,都是key和value组成的一个元组对象

('japan', '\xe5\x9b\xbe\xe5\xa4\x9a\xe5\xa4\xa9\xe5\x85\x89')
('korean', '\xe6\x96\xaf\xe5\xaf\x86\xe8\xbe\xbe\xe7\xbe\x8e')
('china', '\xe5\xb0\x8f\xe7\xbe\x8e')

如果是把每个元组的元素都分别取出来,就会把key和value全部输出

print (everyEntry[0]  + ":" + everyEntry[1])

输出结果:

japan:图多天光
korean:斯密达美
china:小美

备注:items()方法返回的是dict_items对象,而dict_items的内部则持有的数据结构是[("key","value"),("key","value"),("key","value")]

第五种:使用dict的items()方法,然后直接解包元组

每一轮遍历取出来的Entry元素是一个tuple对象,此时将元组对象的两个元素直接赋值给定义的两个变量(这里自动执行解包元组操作)

girl_dict= {"China": "小美", "Japan": "图多天光", "Koean": "斯密达美"}


for key,value  in girl_dict.items():  #for (key,value) in girl_dict.items() 这样加上括号也可以
    print (key + ":" + value)

输出结果:

japan:图多天光
korean:斯密达美
china:小美

总结

dict遍历元素的顺序与你插入元素、访问元素的顺序均无关……需要有序dict的OrderedDict(类似于Java中的LinkedHashMap)

freadahead.c: In function 'freadahead': freadahead.c:92:3: error: #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib." 92 | #error "Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib." | ^~~~~ make[7]: *** [Makefile:1910: freadahead.o] Error 1 make[7]: Leaving directory '/home/wk/lede_AR9331_zhuotk_source_64bit/build_dir/host/m4-1.4.18/lib' make[6]: *** [Makefile:1674: all] Error 2 make[6]: Leaving directory '/home/wk/lede_AR9331_zhuotk_source_64bit/build_dir/host/m4-1.4.18/lib' make[5]: *** [Makefile:1572: all-recursive] Error 1 make[5]: Leaving directory '/home/wk/lede_AR9331_zhuotk_source_64bit/build_dir/host/m4-1.4.18' make[4]: *** [Makefile:1528: all] Error 2 make[4]: Leaving directory '/home/wk/lede_AR9331_zhuotk_source_64bit/build_dir/host/m4-1.4.18' make[3]: *** [Makefile:29: /home/wk/lede_AR9331_zhuotk_source_64bit/build_dir/host/m4-1.4.18/.built] Error 2 make[3]: Leaving directory '/home/wk/lede_AR9331_zhuotk_source_64bit/tools/m4' make[2]: *** [tools/Makefile:150: tools/m4/compile] Error 2 make[2]: Leaving directory '/home/wk/lede_AR9331_zhuotk_source_64bit' make[1]: *** [tools/Makefile:146: /home/wk/lede_AR9331_zhuotk_source_64bit/staging_dir/target-mips_24kc_musl/stamp/.tools_compile_yynyyyyynyyyyynyynnyyyyyyyyyyyyyyyyyyyynyynynyyyynny] Error 2 make[1]: Leaving directory '/home/wk/lede_AR9331_zhuotk_source_64bit' make: *** [/home/wk/lede_AR9331_zhuotk_source_64bit/include/toplevel.mk:209:world] 错误 2
最新发布
04-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值