fromkeys方法的意外结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了fromkeys方法的意外结果相关的知识,希望对你有一定的参考价值。

我是Python的新手,正在学习它的基础知识。

我遇到了这段代码:

keys = {'a', 'e', 'i', 'o', 'u' }
vowels = dict.fromkeys(keys)
print(vowels)

我的期望是输出将像:

{'a': None, 'e': None, 'i': None, 'o': None, 'u': None}

但是当我在pyCharm中执行这段代码时,得到的结果如下:

{'u': None, 'o': None, 'e': None, 'a': None, 'i': None}

[请帮助我了解此处发生的情况。它背后有逻辑吗?

编辑1(在对问题进行初步评论后:

我的理解如下:

  1. 当创建字典'keys'时,将按该键序列分配存储块,并带有下一个成员块的地址(如链接列表)。

  2. 当执行'fromkeys'方法时,它将遵循相同的模式并获得一个克隆。

答案
但是当将键用作listtuple对象时,您会得到想要的:

keys = ['a', 'e', 'i', 'o', 'u'] vowels = dict.fromkeys(keys) print(vowels) #{'a': None, 'e': None, 'i': None, 'o': None, 'u': None}

以上是关于fromkeys方法的意外结果的主要内容,如果未能解决你的问题,请参考以下文章

使用 add() 方法添加片段不会隐藏以前的片段

Python MySQLdb 意外行为(?)

list 使用 set 方法和fromkeys去重哪个快?

字典的fromkeys方法的使用

python字典fromkeys()方法中的坑

面试题需要注意的坑