У меня есть словарь со значениями в виде списков текстовых значений.(ID: [текстовые значения]) Ниже приведена выдержка.
data_dictionary = {
52384: ['text2015', 'webnet'],
18720: ['datascience', 'bigdata', 'links'],
82465: ['biological', 'biomedics', 'datamining', 'datamodel', 'semantics'],
73120: ['links', 'scientometrics'],
22276: ['text2015', 'webnet'],
97376: ['text2015', 'webnet'],
43424: ['biological', 'biomedics', 'datamining', 'datamodel', 'semantics'],
23297: ['links', 'scientometrics'],
45233: ['webnet', 'conference', 'links']
}
Я создал словарь по умолчанию для отображения уникальных текстовых значений и их списков уникальных ключей.
dd = defaultdict(list)
for k, v in dictionary_name.items():
dd[tuple(v)].append(k)
, который дал результирующий список уникальных идентификаторов и их текстовые значения:
{('text2015', 'webnet'): [52384, 22276, 97376], ('datascience', 'bigdata', 'links'): [18720], ('biological', 'biomedics', 'datamining', 'datamodel', 'semantics'): [82465, 43424], ('links', 'scientometrics'): [73120, 23297]}
)
Каждый из этих ключей имеет сумму, которую я извлекаю изsum_dictionary.
def extract_sum(key_id, sum_dictionary):
for k,v in sum_dictionary.items():
if key_id == k:
k_sum = v
return k_sum
Здесь можно найти словарь извлеченной суммы.
sum_dict = { 52384:1444856137000,18720:1444859841000, 82465:1444856, 22276:1674856137000, 97376:1812856137000,43424:5183856,23297:1614481000, 45233:1276781300}
Я хочу вывести файлы с одним или несколькими одинаковыми текстовыми значениями, в том числе, если одно значение имеет больше или меньше значенияобщие текстовые значения.И получить результат в виде:
ID_1;ID_2;Sum_for_ID_1;Sum_for_ID_2;[одно или несколько общих текстовых значений между ID_1 и ID_2]
, где Sum_for_ID_1
45233;52384;1276781300;1444856137000;['webnet']
52384;97376;1444856137000;1812856137000;['text2015', 'webnet']
18720;18720;1444859841000;1444859841000;['datascience', 'bigdata', 'links']
73120;23297;144481000;1614481000;['links', 'scientometrics']
(на строку)
Я пытался использовать itertools, чтобы найти все комбинации всех слов в значениях словаря, но итерации занимают слишком многовремя тренировки.
Я думал о запуске метода set для ключей, а также для поиска похожих значений.Любые идеи действительно помогут.