[英]Adding missing values in Python dictionary
我目前有一本以數字索引為鍵的字典。 我知道我應該在字典中總共有多少值,並且想在字典中添加丟失的鍵和一個 null 值以及這些鍵。 為了說明我包括了這個例子:
dictionary = {'0' : '101',
'1' : '102',
'2' : '100',
'4' : '100.5',
'6' : '103'}
我知道我的字典中有 8 個值,所以我想寫一個 function 將上面的字典變成:
dictionary = {'0' : '101',
'1' : '102',
'2' : '100',
'3' : None,
'4' : '100.5',
'5' : None,
'6' : '103',
'7' : None}
任何人都知道如何實現這一目標? 提前致謝。
假設N
是項目數
{**dictionary, **{k: None for k in range(N + 1) if str(k) not in dictionary.keys()}}
但是,將整數作為dictionary
中的鍵可能會更好,這樣您就不必強制轉換為str
編輯感謝 schwobaseggl 評論更好的版本是
{**{str(k): None for k in range(N + 1)}, **dictionary}
在python
中查看有關dict
merge 的問題
以下方法可以解決問題:
m = max(map(int, dictionary))
for i in map(str, range(m)):
if i not in dictionary:
dictionary[i] = None
但這是否有必要值得懷疑,因為您可以輕松地在查找時提供默認值: dictionary.get(key)
無論如何都會為丟失的鍵返回None
。
這樣的事情應該可以解決問題:
dictionary = {'0' : '101', '1' : '102', '2' : '100', '4' : '100.5', '6' : '103'}
key_list = ['0','1','2','3','4','5','6','7']
for k in key_list:
try:
dictionary[k]
except KeyError:
dictionary[k] = None
否則,如果您知道您的值是相互跟隨的,則可以使用以下 function:
def complete_dict(my_dict, begin_at=0, stops_at=8):
for key in range(begin_at, stops_at):
if str(key) not in my_dict.keys():
my_dict[str(key)] = None
return my_dict
然后從begin_at
到stops_at - 1
。
因此,由於您知道它從 0 開始並達到某個值,因此您可以使用 range 循環遍歷所有項目。 如果它已經存在,就使用相同的值,如果不存在,則添加 None。
d = {'0' : '101', '1' : '102', '2' : '100', '4' : '100.5', '6' : '103'}
for i in range(0, 7):
d[str(i)] = d.get(str(i), None)
d = dict(sorted(d.items()))
print(d)
或者,您可以創建新的字典,而不是使用相同的字典並按鍵進行排序,因為您是按順序添加它們,所以它會自動排序。
這是如果您將鍵用作字符串(如您的示例)。 如果他們是 int,就丟掉str(i)
並只使用i
你不能只使用if k not in dictionary: dictionary[k] = None
嗎? 或者是花哨的dictionary[k] = dictionary.get(k)
如果字典中不存在,您可以填寫None
:
dictionary = {'0' : '101', '1' : '102', '2' : '100', '4' : '100.5', '6' : '103'}
keys = ['0','1','2','3','4','5','6','7']
for k in keys:
if k not in dictionary:
dictionary[k] = None
或者如果你想變得花哨:
dictionary = {'0' : '101', '1' : '102', '2' : '100', '4' : '100.5', '6' : '103'}
keys = ['0','1','2','3','4','5','6','7']
for k in keys:
dictionary[k] = dictionary.get(k)
dictionary.get(k)
將通過鍵k
或None
返回值,如果該值不在dictinary
中。
上面的例子可以很好地填充 Nones,但你應該考慮,也許在你從字典中檢索值的地方,使用dictionary.get(key, None)
而不是dictionary[key]
。 這樣你會得到 None 對於不存在的鍵,並擁有你的原始字典。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.