python中dict里的fromkeys用法及个人探索

在使用fromkeys时我发现,如果不进行赋值,而是直接使用,只会产生返回值,而不会对dict的值进行改变。例如:

>>>dict1 = {}
>>>print(dict1)
>>>{}
>>>dict1.fromkeys((1,2,3))
>>>{1:None, 2:None, 3:None}
>>>dict1
>>>{}

也就是说,单纯地使用fromkeys是无法赋值的。那么我就在想,.fromkeys前的dict1到底有什么用呢。所以我将它改为dict2。

>>>dict2.fromkeys([1,2,3])
>>>Traceback (most recent call last):
  File "", line 1, in <module>
NameError: name 'dict2' is not defined

显示不存在dict2,也就是说需要存在这个词典,才能使用这个词典的名称进行生成。
我又进行了如下实验:

>>> dict1 = {'1':1}
>>> dict1
{'1': 1}
>>> dict2 = {'2':2}
>>> dict2
{'2': 2}
>>> dict2.fromkeys([1,2,3])
{1: None, 2: None, 3: None}
>>> dict2
{'2': 2}
>>> dict1 = dict2.fromkeys([1,2,3])
>>> dict1
{1: None, 2: None, 3: None}
>>> dict2 = dict.fromkeys([4,5,6])
>>> dict2
{4: None, 5: None, 6: None}

也就是说,fromkeys前的字典名没有任何影响,而赋值后的字典也与它原本的内容没有任何联系。所以这个函数的作用就是创建一个新的字典,也就是如下用法。并且fromkeys前只需要用dict即可:

>>> dict1 = dict.fromkeys((1,2,3))
>>> dict1
{1: None, 2: None, 3: None}
>>> dict2 = dict.fromkeys([1,2,3],'test')
>>> dict2
{1: 'test', 2: 'test', 3: 'test'}

也就是 不给初值时默认为None,给初值的话为所有键的值为初值。

你可能感兴趣的:(python笔记)