use*_*754 8 python string dictionary
假设我有一个字符串"abcdefghijklmnopqrstuvwxyz"
,我想用这些值初始化字典键.
alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphabetDict = dict()
for char in alphabet:
alphabetDict[char] = 0
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
Ana*_*mar 14
你可以使用dict.fromkeys()
方法 -
>>> s = 'abcdefghijklmnopqrstuvwxyz'
>>> alphaDict = dict.fromkeys(s,0)
>>> alphaDict
{'m': 0, 'p': 0, 'i': 0, 'n': 0, 'd': 0, 'w': 0, 'k': 0, 'y': 0, 's': 0, 'b': 0, 'h': 0, 't': 0, 'u': 0, 'q': 0, 'g': 0, 'l': 0, 'e': 0, 'a': 0, 'j': 0, 'c': 0, 'o': 0, 'f': 0, 'v': 0, 'x': 0, 'z': 0, 'r': 0}
Run Code Online (Sandbox Code Playgroud)
从文档 -
fromkeys(seq [,value])
使用seq中的键创建一个新字典,并将值设置为value.
fromkeys()
是一个返回新字典的类方法.值默认为None
.
请注意,如果value
是类似list
或其他类似的东西,则不应使用dict
此等.由于该值仅在您调用方法时评估一次fromkeys()
,并且所有键都指向同一对象.
您可以使用此恒定类型的值一样int
,str
等等.
此外,您不需要指定s
或alphabet
字符串,您可以改为使用string.ascii_lowercase
.示例 -
>>> import string
>>> alphaDict = dict.fromkeys(string.ascii_lowercase,0)
>>> alphaDict
{'m': 0, 'p': 0, 'i': 0, 'n': 0, 'd': 0, 'w': 0, 'k': 0, 'y': 0, 's': 0, 'b': 0, 'h': 0, 't': 0, 'u': 0, 'q': 0, 'g': 0, 'l': 0, 'e': 0, 'a': 0, 'j': 0, 'c': 0, 'o': 0, 'f': 0, 'v': 0, 'x': 0, 'z': 0, 'r': 0}
Run Code Online (Sandbox Code Playgroud)
您可以在Python中使用字典理解.
alphabetDict = {char: 0 for char in alphabet}
Run Code Online (Sandbox Code Playgroud)
字典(Python文档)
这个答案与上面的Anand之间存在细微差别.Dict comprehensions评估每个键的值,而fromkeys
只测试一次.如果你正在使用像int这样的东西,这没有任何问题.但是,如果你这样做
d = {key: [] for key in <some set>}
d[3].append(5)
print(d[2])
Run Code Online (Sandbox Code Playgroud)
给你
[]
Run Code Online (Sandbox Code Playgroud)
你有不同的清单,而
d = dict.fromkeys(<some set>, [])
d[3].append(5)
print(d[2])
Run Code Online (Sandbox Code Playgroud)
给你
[5]
Run Code Online (Sandbox Code Playgroud)
将所有键映射到同一列表.