猿问

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

有什么区别(目标是提取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

结果看起来一样


子衿沉夜
浏览 124回答 4
4回答

繁花不似锦

不同之处在于,list在大多数情况下这是不必要的,甚至可能是有害的。该.items()方法返回数据的“视图”。根据文档:、 和dict.keys()返回的对象是视图对象。它们提供字典条目的动态视图,这意味着当字典更改时,视图会反映这些更改。dict.values()dict.items()当您将其包装在 中时,情况并非如此,list它保留了创建列表时出现的键/值/项目。list()一般来说,如果您使用 进行迭代,则不应使用 版本for。它充其量是多余的,会给代码带来不必要的视觉混乱。

HUX布斯

很明显,区别在于 的使用list。第一种方法更可取,因为example_dict.items() 返回一个字典视图并for k,v in example_dict.items():“直接”迭代项目。实际上for k,v in list(example_dict.items()):你做了2 次迭代。首先,程序执行一个循环将项目转换为列表。然后执行第二个循环来迭代列表。所以这是没有必要的。

慕妹3242003

这里的区别在于数据类型。迭代时你不会看到它,但正常打印时你会看到它: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() 方法)放入列表中并输出它

MMTTMM

根据定义,aniterable是任何能够一次返回一个成员的 Python 对象,从而允许它在循环中进行迭代for。Alist是一个iterable,但是该方法dict.items()已经返回返回list字典条目的视图或视图,具体取决于所使用的语言的版本。Python2如果您调用list()a list,例如从中生成的一个,dict.items()则会返回一个浅副本,这意味着您将list通过最里面列表的元素创建一个新副本。
随时随地看视频慕课网APP

相关分类

Python
我要回答