为了账号安全,请及时绑定邮箱和手机立即绑定

迭代dictionary.items()与列表(dictionary.items())之间的区别

迭代dictionary.items()与列表(dictionary.items())之间的区别

子衿沉夜 2023-07-11 14:07:06
有什么区别(目标是提取k,v值)for k,v in example_dict.items():     print(k,v)     do_something与for k,v in list(example_dict.items()):     print(k,v)     do_something结果看起来一样
查看完整描述

4 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

不同之处在于,list在大多数情况下这是不必要的,甚至可能是有害的。

.items()方法返回数据的“视图”。根据文档:

、 和dict.keys()返回的对象是视图对象。它们提供字典条目的动态视图,这意味着当字典更改时,视图会反映这些更改。dict.values()dict.items()

当您将其包装在 中时,情况并非如此list它保留了创建列表时出现的键/值/项目。

list()一般来说,如果您使用 进行迭代,则不应使用 版本for。它充其量是多余的,会给代码带来不必要的视觉混乱。

查看完整回答
反对 回复 2023-07-11
?
HUX布斯

TA贡献1876条经验 获得超6个赞

很明显,区别在于 的使用list

第一种方法更可取,因为example_dict.items() 返回一个字典视图并for k,v in example_dict.items():“直接”迭代项目。

实际上for k,v in list(example_dict.items()):你做了2 次迭代。首先,程序执行一个循环将项目转换为列表。然后执行第二个循环来迭代列表。所以这是没有必要的。


查看完整回答
反对 回复 2023-07-11
?
慕妹3242003

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() 方法)放入列表中并输出它


查看完整回答
反对 回复 2023-07-11
?
MMTTMM

TA贡献1869条经验 获得超4个赞

根据定义,aniterable是任何能够一次返回一个成员的 Python 对象,从而允许它在循环中进行迭代for

Alist是一个iterable,但是该方法dict.items()已经返回返回list字典条目的视图或视图,具体取决于所使用的语言的版本。

Python2
如果您调用list()list,例如从中生成的一个,dict.items()则会返回一个浅副本,这意味着您将list通过最里面列表的元素创建一个新副本。


查看完整回答
反对 回复 2023-07-11
  • 4 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信