我如何分析 python 字典中的列表值,添加额外的字典值来显示不同的键和列表值的共同计数?

How can I analyze list values in a python dictionary, add extra dictionary values showing the different keys and the list value count in common?

我有一个更大的字典,格式如下所示。我试图找到键和列表格式的值之间的相似之处。

data_dict = {623823: ['draintheswamp', 'swimming'], 856273: ['elect2015'], 8236472: [], 623526: ['yearmatters'], 72645: ['elect2015'], 723641: ['draintheswamp'], 712641: ['swimming'], 917265: ['elect2015', 'draintheswamp']}

我想输出两个(额外的字典值)来显示每个键所关联的键(如果它发现相似性或空值)以及该列表中相似值的数量。
字典值中的列将是 (键, [text_used], [related_key, number_of_related_texts])

关于新词典结果外观的简要示例:

new_dict = {623823: (['draintheswamp', 'swimming'], [(723641, 1), (712641, 1)]), 856273: (['elect2015'], [(72645, 1), (917265, 1)]), ...}

所以我想出了一个快速生成您所请求的词典的方法。为简洁起见,我使用 np.intersect1d 方法快速计算字典值列表之间的共享项目。

import numpy as np

new_data = {} #new dict
for key in data_dict.keys():
    new_data[key] = () #set empty tuple
    x = [] #set empty list x
    y = [] #set empty list y
    for k, v in data_dict.items():
        if key == k: #don't count similarity on same key
            pass
        else:
            shared = np.intersect1d(data_dict[key],v) #all shared items
            if shared:
                for item in shared:
                    x.append(item) #add shared item to list x
                    y.append((k, len(shared))) # add k and number of shared items to list y
                new_data[key] = (list(set(x)),y) #update new dict
            else:
                pass #pass if no shared items found...

如果您有任何评论没有回答的问题,请告诉我。我希望这对您的项目有所帮助。它也没有优化,因为它是模仿您所要求的快速而肮脏的例程。祝你好运!