嗨,我定义了两个包含列表的字典
dict_1 = {'V1': ['2024-11-07', '2024-11-08'], 'V2': ['2024-11-07', '2024-11-08']}
dict_2 = {'V1': ['2024-11-08'], 'V2': ['2024-11-07']}
上面 dict_2 中的两个项目(key 和 val)都是 dict_1 的子集,所以我希望在这两种情况下都返回 true。
我尝试使用
res = set(dict_2.items()).issubset(set(dict_1.items()))
然而,如果它的简单字典像一样,它就可以工作
dict_1 = {'abc' : 1, 'pqr' : 2}
dict_2 = {'abc' : 1}
就我而言,有什么办法可以做到这一点吗?
您可以确保
dict_2
的键是 dict_1
的键的子集,并且 dict_2
的每个子列表都是 dict_2
相应子列表的子集:
def dict_issubset(maybe_subset, maybe_superset):
return maybe_subset.keys() <= maybe_superset.keys() and all(
set(sublist).issubset(maybe_superset[key])
for key, sublist in maybe_subset.items()
)
这样:
dict_1 = {'V1': ['2024-11-07', '2024-11-08'], 'V2': ['2024-11-07', '2024-11-08']}
dict_2 = {'V1': ['2024-11-08'], 'V2': ['2024-11-07']}
print(dict_issubset(dict_2, dict_1))
输出:
True