У меня есть словарь, в котором ключ - это уникальное имя, а значение - список неуникальных имен. Для знания предметной области ключи - это рабочие таблицы Tableau, а значение представляет собой список таблиц, к которым подключается рабочая книга.
Я пытаюсь сделать так, чтобы для каждого ключа возвращался каждый второй ключ, имеющий не менее трех соответствующие значения. Это, в основном, позволит мне находить книги, которые перекрывают данные, используя те же таблицы.
В настоящее время я могу найти все ключи, которые соответствуют указанному значению c, выполнив следующие действия:
keys = [key for key, value in intersect_dict.items() if 'VOLUME_DIMENSION' in value]
keys
values = [value for key, value in intersect_dict.items() if 'VOLUME_DIMENSION' in value]
values
Вывод ключей:
['(SAN) STORAGE GROUP INVENTORY AND CAPACITY',
'(SAN) STORAGE GROUP INVENTORY AND CAPACITY V2',
'SAN INVENTORY AND CAPACITY']
И вывод значений:
[['VOLUME_DIMENSION',
'EXTENDED_DATA',
'VOLUME_HISTORY_CAPACITY_FACT',
'HOST_DIMENSION',
'STORAGE_DIMENSION',
'DATE_DIMENSION'],
['STORAGE_DIMENSION',
'DATE_DIMENSION',
'VOLUME_DIMENSION',
'HOST_DIMENSION',
'VOLUME_HISTORY_CAPACITY_FACT',
'EXTENDED_DATA'],
['VOLUME_HISTORY_CAPACITY_FACT',
'HOST_DIMENSION',
'EXTENDED_DATA',
'DATE_DIMENSION',
'STORAGE_DIMENSION',
'VOLUME_DIMENSION']]
Есть ли возможный способ, которым я могу сделать по сути то же самое за исключением того, что вместо
if 'VOLUME_DIMENSION' in value
у меня есть if values in value match 3 times or more
?
Пожалуйста, дайте мне знать, если требуется дополнительная информация.
Edit1: Ниже запрошенная выдержка из словаря ввода:
{'(SAN) STORAGE GROUP INVENTORY AND CAPACITY': ['VOLUME_DIMENSION',
'EXTENDED_DATA',
'VOLUME_HISTORY_CAPACITY_FACT',
'HOST_DIMENSION',
'STORAGE_DIMENSION',
'DATE_DIMENSION'],
'(SAN) STORAGE GROUP INVENTORY AND CAPACITY V2': ['STORAGE_DIMENSION',
'DATE_DIMENSION',
'VOLUME_DIMENSION',
'HOST_DIMENSION',
'VOLUME_HISTORY_CAPACITY_FACT',
'EXTENDED_DATA'],
Запрошенный вывод будет выглядеть примерно так:
{'(SAN) STORAGE GROUP INVENTORY AND CAPACITY': workbook1, workbook7, workbook8}
"Рабочие книги", показанные в качестве значений, будут рабочими книгами, имеющими три или более совпадающих значения с этим ключом.
Edit2: извините за неправильное объяснение формата данных. Попытка уточнить это здесь.
d = {
'item1': ['A', 'B', 'C'],
'item2': ['A', 'B', 'C', 'D'],
'item3': ['A', 'C', 'D'],
'item4': ['B', 'C', 'D', 'E'],
'item5': ['A', 'B', 'C'],
'item6': ['A', 'B', 'C', 'E'],
}
Results = {
'item1': ['item2', 'item5', 'item6']
'item2': ['item1', 'item5', 'item6']
}
В приведенном выше примере d будет моим общим набором данных в виде словаря, а результаты - это то, что я хотел бы для вывода. Так что это позволило бы мне определить, какие элементы делятся данными. Или в этом случае делимся письмами.