входные данные:
input_tuple = (
(1, 'name1', 'Noah'),
(1, 'name2', 'Liam'),
(2, 'name3', 'Mason'),
(3, 'name4', 'Mason'),
(4, 'name5', 'Noah'),
(4, 'name6', 'Liam'),
(5, 'name7', 'Elijah'),
(5, 'name8', 'Noah'),
(5, 'name9', 'Liam')
)
, преобразованные в dict (ключ, значение):
input_tuple = {
1: [['name1', 'Noah'], ['name2', 'Liam']],
2: [['name3', 'Mason']],
3: [['name4', 'Mason']],
4: [['name5', 'Noah'], ['name6', 'Liam']],
5: [['name7', 'Elijah'], ['name8', 'Noah'],
['name9', 'Liam']]
}
сделал еще один фильтр только для понимания модели данных:
dict =
{
1: ['Noah', 'Liam'],
2: ['Mason'],
3: ['Mason'],
4: ['Noah', 'Liam'],
5: ['Elijah', 'Noah', 'Liam']
}
Теперь я хочу удалить дубликаты, а затем вернуться к кортежу, как показано ниже: условия соответствия дубликатов: 1) устранить дубликаты, если значение len (значение)> 1 2) должно точно совпадать, а не частично.
Примечание:значения ключей 2 и 3 не являются дубликатами, потому что len (значение) не равно -gt 1 значение ключа 4 утрачено, поскольку его точная копия, поскольку мы выполняем точное сопоставление, следовательно, в ключе 5 значение ['Noah', Liam] не будет идти.
output_tuple =
(
(1, 'name1', 'Noah'),
(1, 'name2', 'Liam'),
(2, 'name3', 'Mason'),
(3, 'name4', 'Mason'),
(5, 'name7', 'Elijah'),
(5, 'name8', 'Noah'),
(5, 'name9', 'Liam')
)
код, который я пробовал:
from functools import reduce
from collections import defaultdict
input_tuple_dictionary = defaultdict(list)
for (key, *value) in input_tuple:
input_tuple_dictionary[key].append(value[1])
input_tuple_dictionary
for index in range(len(input_tuple_dictionary)-1):
for key, value in input_tuple_dictionary.items():
if len(value) > 1:
if value == value[index+1]:
print(key)