set_of_A_key
和set_of_B_key
是詞典dict_A
和dict_B
的兩組鍵。我想在下面的三套按鍵操作在字典中的值:什麼是Pythonic迭代設置交集和排除的方式?
(set_of_A_key & set_of_B_key)
, (set_of_A_key - set_of_B_key)
和 (set_of_B_key - set_of_A_key)
什麼是Python的方式做到這一點?
這一個是優雅的用很少的代碼重複,但確實額外的計算爲找到交集的關鍵和排除
only_A = (set_of_A_key - set_of_B_key)
only_B = (set_of_B_key - set_of_A_key)
for key in (set_of_A_key | set_of_B_key):
if key in only_A:
A_val = dict_A[key]
B_val = 0
elif key in only_B:
B_val = dict_B[key]
A_val = 0
else:
B_val = dict_B[key]
A_val = dict_A[key]
some_function(A_val,B_val)
或這一個速度快,但代碼重複出現
for key in (set_of_A_key - set_of_B_key):
some_function(dict_A[key],0)
for key in (set_of_B_key - set_of_A_key):
some_function(0,dict_B[key])
for key in (set_of_A_key & set_of_B_key):
some_function(dict_A[key],dict_B[key])
還是有更好的方法來上面?
你可以使用dict.viewkeys等.. –
你實際上是在尋找symmetric_difference嗎? –
@PadraicCunningham 我不是在尋找symmetric_difference,但'dict.viewkeys'領導幫助! – nimeshkiranverma