【发布时间】:2015-06-20 22:02:43
【问题描述】:
set_of_A_key和set_of_B_key是字典dict_A和dict_B的两组键。我想对以下三组中的键的字典值进行操作:
(set_of_A_key & set_of_B_key),
(set_of_A_key - set_of_B_key) 和
(set_of_B_key - set_of_A_key)
pythonic 的方法是什么?
这个很优雅,代码重复很少,但是需要额外的计算来找到集合交集和排除中的键
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领导帮助了!
标签: python dictionary set iteration set-intersection