如何在Python中检查一个包含列表的字典是否是另一个包含列表的字典的子集

问题描述 投票:0回答:1

嗨,我定义了两个包含列表的字典

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} 

就我而言,有什么办法可以做到这一点吗?

python dictionary
1个回答
0
投票

您可以确保

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

演示:https://ideone.com/4UYpwB

© www.soinside.com 2019 - 2024. All rights reserved.