【Python】字典遍历(dict遍历)

       字典也是我们在做数据分析时经常用到的类型,之前小白有总结过DataFrame的遍历,这篇博文,小白整理了自己遍历字典时的几种方法。

      众所周知,字典是键值对的组合,那么对字典的遍历就自然而然的包含了对键和值的遍历,下面依次介绍遍历键、值,键值三种情况的遍历。

首先,创建一个字典,以便下面的遍历。

dict = {
    '小明':129,
    '小兰':148,
    '小红':89
}

1.遍历key

可以看到,这里对字典key值的遍历,有三种方法,其中第三种方法报错了,这是因为小白使用的是PY3版本,在python3中keys()的方法替代了iterkeys()方法,如果是用python2版本是可以的,不过小白建议掌握python3里的方法,毕竟python2之后用的会越来越少。

#function1
for key in dict:
    print (key)
---------------结果---------------------
小明
小兰
小红


#function2
for key in dict.keys():
    print (key)

---------------结果---------------------
小明
小兰
小红


#function3
for key in dict.iterkeys():
    print (key)

---------------结果-----------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-10-e1bc6c7e42fe> in <module>
      1 
      2 #方法三
----> 3 for key in dict.iterkeys():
      4     print (key)

AttributeError: 'dict' object has no attribute 'iterkeys'

2.遍历value

同样,第二种方式报错的原因是一样的,python3中去掉了第二种方式,以方法一来代替,这里遍历value时和遍历key不一样,这里没有像遍历key时的第一种方法了,遍历key的第一种方法,默认输出就是key

#function1
for value in dict.values():
    print (value)
------------------------
129
148
89


#function2
for value in dict.itervalues():
    print (value)

-----------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-12-92a1ef0f19df> in <module>
----> 1 for value in dict.itervalues():
      2     print (value)

AttributeError: 'dict' object has no attribute 'itervalues'

3.同时遍历key和value

同时遍历的方法比较多,我们一一来看:

(1)首先看方法一和方法二,其实这两种方法是差不多的,只是加不加括号的区别,这个可以根据喜好来选择。

(2)然后看方法三,方法三使用简写的方式实现了对key和value的读取,形式上更加简便

(3)再看结合zip使用的两种方法,其实方法四更像方法一和二,只是多了一个zip操作,方法五更加像方法三,也是使用了zip函数

注意:另外,我们来看下关于key,value方式和kv方式的区别,在方法四和五时,小白输出了数据的类型,两种方式的区别就主要在于输出数据的数据类型,key,value方式输出的是值本身,数据是什么类型,结果就是什么类型,但是方法五输出的tuple类型。

#function1
for key,value in dict.items():
    print ('key: ',key,'value: ',value)
------------------------
key:  小明 value:  129
key:  小兰 value:  148
key:  小红 value:  89


#function2
for (key,value) in dict.items():
    print ('key: ',key,'value: ',value)
------------------------
key:  小明 value:  129
key:  小兰 value:  148
key:  小红 value:  89


#function3
for kv in dict.items():
    print ('kv is : ',kv)
------------------------
kv is :  ('小明', 129)
kv is :  ('小兰', 148)
kv is :  ('小红', 89)

----------------------结合zip使用---------------------
#function4
for key,value in zip(dict.keys(), dict.values()):
    print ('key:',key,'value: ',value)
    print('type key:',type(key),'type value:',type(value))
------------------------
key: 小明 value:  129
type key: <class 'str'> type value: <class 'int'>
key: 小兰 value:  148
type key: <class 'str'> type value: <class 'int'>
key: 小红 value:  89
type key: <class 'str'> type value: <class 'int'>

#function5
for kv in zip(dict.keys(), dict.values()):
    print ('kv: ',kv)
    print('type:',type(kv))
------------------------
kv:  ('小明', 129)
type: <class 'tuple'>
kv:  ('小兰', 148)
type: <class 'tuple'>
kv:  ('小红', 89)
type: <class 'tuple'>

4.定义方法读取key和value

上面介绍了读取key和value的方法,那么,如果我们在一个项目中要对key和value读取,还是定义成方法来读取,输出结果,这样便于我们的调用以及后面的使用,如下:

扫描二维码关注公众号,回复: 9882774 查看本文章
#定义读key值的函数
def keys_function(dict):
    keys = []
    #读出key
    for k in dict.keys():
        keys.append(format(k))
    return keys
#定义读出value
def values_function(dict):
    values = []
    for v in dict.values():
        values.append(format(v))
    return values


print('key:',keys_function(dict),'type:',type(keys_function(dict)))
------------结果--------------
key: ['小明', '小兰', '小红'] type: <class 'list'>

print('value:',values_function(dict),'type:',type(values_function(dict)))
------------结果--------------
value: ['129', '148', '89'] type: <class 'list'>
发布了92 篇原创文章 · 获赞 125 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/Jarry_cm/article/details/99684387