有時有必要從給定的鍵組成一個字典。粗略地做這將需要時間並且是更乏味的工作。因此,fromkeys() 可以幫助我們使用一種方法輕鬆解決這個問題。本文解釋了與此功能相關的操作和其他方面。
語法: fromkeys (seq, val)
參數:
seq: 要轉換成字典的序列。
val: 需要分配給生成的keys的初始值...默認為None。返回: 如果沒有提供值,則映射到 None 的字典,否則映射到字段中提供的值。
代碼#1: fromkeys()的演示
|
退出:
新創建的具有 None 值的字典: {’d’: None, ’a’: None, ’b’: None, ’c’: None, ’e’: None }
< /blockquote>
新創建的以1為值的dict:{’d’:1,’a’:1,’b’:1,’c’:1,’e’:1}可變對像作為值的 fromdict () 行為:
fromdict () 函數也可以提供多變量對像作為默認值。但是在這種情況下,從字典中創建了一個深拷貝,也就是說,如果我們向原始列表添加一個值,則添加發生在所有鍵值中。
預防:可以使用某些字典理解技術來創建一個新列表作為鍵值,而不是指向原始列表作為鍵值。
代碼#2: 展示可變對象的行為。
< td class = "code">
# Python 3 演示代碼
# 可變對象的行為
p>
# 序列和列表初始化
seq
=
{
’a’
,
’b’
,
’c’
,
’d’
,
’e’
}
lis1
=
[
2
,
3
]
# 使用fromkeys()將sequence轉為dict
# 使用普通方法
res_dict
=
dict
。 fromkeys (seq, lis1)
# 打印創建的dict
(
"新創建的帶有列表值的字典:"
+
str
(res_dict))
< br />
# 添加到 lis1
lis1.append (
4
)
# 添加後打印diktat
# 注意添加發生在所有值中
(
" 附加後帶有列表值的dict:"
<代碼類 = "關鍵字"> + <代碼類 = "函數"> str
(res_dict) )
lis1
<代碼類 ="keyword "> =[
2
,
3
]
(
’’
)
# 使用 fromkeys() 將序列轉換為 dict
# 使用 dict.理解
res_dict2
=
{key:
list
(lis1)
for
key
in
seq}
# 打印創建的dict
(
" 新創建的帶有列表值的 dict:"
+
str
(res_dict2))
# 添加到 lis1
lis1.append (
4
)
# 添加後打印 diktat
# 注意現在沒有添加。
(
" 帶有列表的 dict附加後的值(不變):"
+
str
(res_dict2))
輸出:
新創建的dict,列表值:{’d’: [2, 3], ’e’: [2, 3], ’c’: [2, 3] , ’a’: [2, 3], ’b’: [2, 3]}
附加後帶有列表值的dict:{’d’: [2, 3, 4], ’e’: [2, 3, 4], ’c’: [2, 3, 4], ’a’: [2, 3, 4], ’b’: [2, 3, 4] }新創建的帶有列表值的字典:{’d’: [2, 3], ’e’: [2, 3], ’c’: [2, 3], ’a’ : [2, 3], ’b’: [2, 3]}
附加後帶有列表值的dict(不變):{’d’: [2, 3], ’e’: [2, 3], ’c’ : [2, 3], ’a’: [2, 3], ’b’: [2, 3]}