Python 如何找到具有最大公共值数的字典的键?

Python 如何找到具有最大公共值数的字典的键?,python,Python,假设有一本像这样的字典 my_dict={'A':{'5','7','9','3'}, 'B':{'4','8','3'}, 'C':{'5','3','2','9'}, 'D':{'1'、'6'、'8'、'3'}, 'E':{'4','3','5'} 现在输出应该类似于{A,C},因为它们有最多的公共值 dct = {'A': {'5', '7', '9', '3'}, 'B': {'4', '8','3'}, 'C': {'5', '3', '2', '9'}, 'D': {'1','6'

假设有一本像这样的字典

my_dict={'A':{'5','7','9','3'},
'B':{'4','8','3'},
'C':{'5','3','2','9'},
'D':{'1'、'6'、'8'、'3'},
'E':{'4','3','5'}
现在输出应该类似于{A,C},因为它们有最多的公共值

dct = {'A': {'5', '7', '9', '3'}, 'B': {'4', '8','3'}, 'C': {'5', '3', '2', '9'}, 'D': {'1','6', '8','3'}, 'E': {'4','3','5'}}
ans = [None, None]
mx = 0

for i in dct:
    for j in dct:
        if i != j and len(dct[i].intersection(dct[j])) > mx:
            ans = [i, j]
            mx = len(dct[i].intersection(dct[j]))
由于包含有集合,为了找到公共元素的数量,我们有
交集
方法

>>> ans
['A', 'C']

尽管如此,值得注意的是,此代码始终会生成一对。如果您想要更多的元素,循环的数量将相应地增加。

您尝试了什么?有什么想法吗?请向我们展示您迄今为止在解决问题方面所做的努力。如果您没有尝试解决问题,那么在关键方面的响应将越来越少。您还没有详细说明您要寻找的内容。你考虑过街角的案子吗?如果两对钥匙绑在一起的物品最多,那该怎么办?对于这一点,如果这两对有一个共同的键,那么三个键都有最多的共同项呢?使用内置类的名称(如
dict
)作为变量名通常不是一个好主意。另外,请注意,您将每个集合对与此代码进行两次比较。@CrazyChucky谢谢,我忘了先自己测试代码,所以错误没有被注意到。现已修复:)