假設我有一個字符串"abcdefghijklmnopqrstuvwxyz"
,我想用這些值初始化字典鍵。將字符串中的每個字符轉換爲字典鍵
alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphabetDict = dict()
for char in alphabet:
alphabetDict[char] = 0
有沒有更好的方法呢?
假設我有一個字符串"abcdefghijklmnopqrstuvwxyz"
,我想用這些值初始化字典鍵。將字符串中的每個字符轉換爲字典鍵
alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphabetDict = dict()
for char in alphabet:
alphabetDict[char] = 0
有沒有更好的方法呢?
做,在一行中您可以使用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}
fromkeys(SEQ [,值])
使用來自seq的值和值設置爲value的鍵創建一個新字典。
fromkeys()
是一種返回新字典的類方法。值默認爲None
。
請注意,你不應該使用這個,如果value
是可變的東西像list
或其他dict
等。當你調用該方法fromkeys()
值僅evaluted一次,所有的鍵指向同一個對象。
你可以使用這個恆定類型的值一樣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}
您可以在Python中使用字典解析。
alphabetDict = {char: 0 for char in alphabet}
Dictionaries(Python文檔)
有這個答案和阿南德的上方之間微小的差別。 Dict理解評估每個鍵的價值,而fromkeys
只做一次。如果你使用像int這樣的東西,這沒有問題。但是,如果你做
d = {key: [] for key in <some set>}
d[3].append(5)
print(d[2])
給你
[]
,你有不同的名單,而
d = dict.fromkeys(<some set>, [])
d[3].append(5)
print(d[2])
給你
[5]
將所有的按鍵映射相同的列表。
是的,你可以使用dictionary comprehensions.
In [1]: alphabet = 'abcdefghijklmnopqrstuvwxyz'
In [2]: {x:0 for x in alphabet} # dictionary comprehension
Out[2]:
{'a': 0,
'b': 0,
'c': 0,
'd': 0,
'e': 0,
'f': 0,
'g': 0,
'h': 0,
'i': 0,
'j': 0,
'k': 0,
'l': 0,
'm': 0,
'n': 0,
'o': 0,
'p': 0,
'q': 0,
'r': 0,
's': 0,
't': 0,
'u': 0,
'v': 0,
'w': 0,
'x': 0,
'y': 0,
'z': 0}
感謝拉胡爾,這一個也好啊。 – user1767754
試用另一種方法。
dict(zip(alphabets, '0'*len(alphabets)))
http://stackoverflow.com/questions/1747817/python-create-a-dictionary-with-list-comprehension –