python

Python Dictionary fromkeys()

2018-10-11  本文已影响11人  庵下桃花仙

描述

Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。

语法

dict.fromkeys(seq[, value])

参数

seq -- 字典键值列表。
value -- 可选参数, 设置键序列(seq)的值。

返回值

该方法返回一个新字典。

Example 1: Create a dictionary from a sequence of keys

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }

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

Example 2: Create a dictionary from a sequence of keys with value

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }
value = 'vowel'

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

Example 3: Create a dictionary from mutable object list

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }
value = [1]

vowels = dict.fromkeys(keys, value)
print(vowels)

# updating the value
value.append(2)
print(vowels)
{'u': [1], 'o': [1], 'a': [1], 'e': [1], 'i': [1]}
{'a': [1, 2], 'u': [1, 2], 'o': [1, 2], 'e': [1, 2], 'i': [1, 2]}

如果提供的值是一个可变对象(其值可以被修改),比如list、dictionary等,那么当可变对象被修改时,序列中的每个元素也会被更新。
这是因为,每个元素都被分配到同一个对象的引用(指向内存中的同一个对象)。

To avoid this issue, we use dictionary comprehension.

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }
value = [1]

vowels = { key : list(value) for key in keys }
# you can also use { key : value[:] for key in keys }
print(vowels)

# updating the value
value.append(2)
print(vowels)
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}

在这里,对于键中的每个键,将创建一个value的新列表并将其分配给它。
本质上,值不会被赋值给元素,但会从中创建一个新列表,然后将其分配给字典中的每个元素。

上一篇 下一篇

猜你喜欢

热点阅读