thi*_*ien 3 python dictionary key python-2.7 python-3.x
A = {
'a': 1,
'b': 2,
'c': 3
}
B = {
'a': 1,
'b': 2,
'c': 3,
'd': 4
}
Run Code Online (Sandbox Code Playgroud)
我的目标是检查A是否是B的"子字典".我的意思是每一对键:A中的值都在B中.这是我的尝试
def is_sub_dict(first_dict, second_dict):
for x in first_dict:
if x not in second_dict or first_dict[x] != second_dict[x]:
return False
return True
is_sub_dict(A, B) #True
is_sub_dict(B, A) #False
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?或者,也许是一种更加pythonic的方式,因为这肯定不像它.
set从dict元组创建一个,然后测试该集是否是其他项元组的子集
def is_subset(A,B):
return set(A.items()).issubset(B.items())
Run Code Online (Sandbox Code Playgroud)
创建后,set保证快速查找.
(如果必须以相同的方式重复操作,A最好"缓存" set(A.items())以获得更好的性能)
它的工作原理是因为字典的值是可以清除的.如果不是,那么好的旧all(x in y for ...)方法是另一种选择(见其他答案).
小智 5
看一下这个
all(item in B.items() for item in A.items())
Run Code Online (Sandbox Code Playgroud)
希望它能帮助你!