将String中的每个字符转换为Dictionary Key

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等等.


此外,您不需要指定salphabet字符串,您可以改为使用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)


Sna*_*fee 6

您可以在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)

将所有键映射到同一列表.