python的字典的items(), keys(), values() | 您所在的位置:网站首页 › 字典的items方法返回值类型 › python的字典的items(), keys(), values() |
之前用过,但是没弄明白 只知道这三个东西返回的肯定是一个可迭代对象,但是具体是啥就不太清楚,基础知识不太扎实 今天写这篇文章 https://blog.csdn.net/qq_43657442/article/details/108338507时突然想到的,闲来有空便整理记录下 首先说结论在 python2.X中 他们三个都返回一个list ,即返回值是一个列表 python2.7示例 a={'a':1,'b':2,'c':3,'d':4,'efg':567} print(a.items()) print(a.keys()) print(a.values())输出 [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('efg', 567)] ['a', 'b', 'c', 'd', 'efg'] [1, 2, 3, 4, 567] 在 python3.X中 他们三个都返回一个 dict 对象的 视图,都是 视图对象 python3.7示例 a={'a':1,'b':2,'c':3,'d':4,'efg':567} print(a.items()) print(a.keys()) print(a.values())输出 dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('efg', 567)]) dict_keys(['a', 'b', 'c', 'd', 'efg']) dict_values([1, 2, 3, 4, 567]) 可以发现, items() 、keys()、values() 返回值的类型分别为 dict_items、dict_keys、dict_values 。并不像 python2.X 返回值是一个列表 视图对象是一个 iterable 对象,它主要有三个特点: 第一,视图对象不是list,所以list方法对视图对象无法直接使用; 第二,视图对象动态跟踪字典的变化; 第三,对于dict.keys来说,返回的视图对象是一个 set-like(类似集合) 对象,因此可以使用 set 的方法来进行操作,但是,dict.values 返回的不是一个 set-like 的对象,因此无法使用 set 的方法来操作,这儿呢也好理解,键是独一无二的,但是值不是独一无二的(Set中的元素只会出现一次,即 Set 中的元素是唯一的)。 dict.items当且仅当包含唯一的对,并且只包含不可变对象,那么它也是 set-like 的对我来说,似乎只要知道他是一个 iterable 对象就好了,把它作为参数带入到函数中达到我的目的,就比如 itertools 中的 permutations 实现全排列和任意排列 这篇文章一样 扩展资料如果想进一步了解视图对象是什么,为什么要用视图对象,视图对象有什么好处等,可以参考如下链接 https://www.thinbug.com/q/47273297 https://kb.kutu66.com/others/post_13439649 https://cloud.tencent.com/developer/ask/73833https://cloud.tencent.com/developer/ask/73833大概的意思使用 视图对象,你可以迭代实际的数据结构,而无需中间列表,加快速度的人同时降低内存开销。 视图对象存储对 dict 的引用,并将视图上的操作转换为dict上的相应操作,直接遍历 dict 的底层存储,具体的原理可能要涉及到一些计算机底层的东西,我也不是很了解 当然,你要把 dict_items、dict_keys、dict_values 类型的变成 list 也简单,强制转换就好了 示例 a={'a':1,'b':2,'c':3,'d':4,'efg':567} print(list(a.items())) print(list(a.keys())) print(list(a.values()))输出 [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('efg', 567)] ['a', 'b', 'c', 'd', 'efg'] [1, 2, 3, 4, 567] |
CopyRight 2018-2019 实验室设备网 版权所有 |