4 回答
![?](http://img1.sycdn.imooc.com/54584f3100019e9702200220-100-100.jpg)
TA贡献1851条经验 获得超4个赞
不同之处在于,list
在大多数情况下这是不必要的,甚至可能是有害的。
该.items()
方法返回数据的“视图”。根据文档:
、 和
dict.keys()
返回的对象是视图对象。它们提供字典条目的动态视图,这意味着当字典更改时,视图会反映这些更改。dict.values()
dict.items()
当您将其包装在 中时,情况并非如此,list
它保留了创建列表时出现的键/值/项目。
list()
一般来说,如果您使用 进行迭代,则不应使用 版本for
。它充其量是多余的,会给代码带来不必要的视觉混乱。
![?](http://img1.sycdn.imooc.com/54584cc500019c5b02200220-100-100.jpg)
TA贡献1876条经验 获得超6个赞
很明显,区别在于 的使用list
。
第一种方法更可取,因为example_dict.items() 返回一个字典视图并for k,v in example_dict.items():
“直接”迭代项目。
实际上for k,v in list(example_dict.items()):
你做了2 次迭代。首先,程序执行一个循环将项目转换为列表。然后执行第二个循环来迭代列表。所以这是没有必要的。
![?](http://img1.sycdn.imooc.com/54586870000183e302200220-100-100.jpg)
TA贡献1824条经验 获得超6个赞
这里的区别在于数据类型。迭代时你不会看到它,但正常打印时你会看到它:
d = {1: "first", 2: "second", 3: "third"}
d.items()
dict_items([(1, 'first'), (2, 'second'), (3, 'third')])
list(d.items())
[(1, 'first'), (2, 'second'), (3, 'third')]
在最后一个我将 dict 对象(使用 items() 方法)放入列表中并输出它
![?](http://img1.sycdn.imooc.com/54584ed2000152a202200220-100-100.jpg)
TA贡献1869条经验 获得超4个赞
根据定义,aniterable
是任何能够一次返回一个成员的 Python 对象,从而允许它在循环中进行迭代for
。
Alist
是一个iterable
,但是该方法dict.items()
已经返回返回list
字典条目的视图或视图,具体取决于所使用的语言的版本。
Python2
如果您调用list()
a list
,例如从中生成的一个,dict.items()
则会返回一个浅副本,这意味着您将list
通过最里面列表的元素创建一个新副本。
添加回答
举报