Если вы хотите получить ключи из словаря, которые имеют одинаковые неповторяющиеся значения кортежей, вы можете сначала отфильтровать те, которые больше 5, затем объединить и считать, если они повторяются, все необходимые инструменты доступны в Python стандартные библиотеки *:
Создайте свой словарь:
from collections import Counter
from itertools import chain
dic = {('a','b'):2,('b','c'):4,('c','d'):6,('d','e'):8,('e','f'):8,('f','g'):3,('g','h'):2,('h','i'):7}
Отфильтруйте с использованием списка:
less_5 = [k for k,v in dic.items() if v < 5]
Подсчет повторных клавиш:
counter = Counter(chain.from_iterable(less_5))
counter.most_common()
Output:
[('b', 2), ('g', 2), ('a', 1), ('c', 1), ('f', 1), ('h', 1)]
Если вы действительно хотите их распечатать:
for k,v in counter.items():
if v > 1:
#only print if they key appears in 2 different keys
print(k)
Output:
b
g
Редактировать: ОП добавили вопрос в файлер на 50%.
Дополнительно вычислите ваш порог для значений и используйте тот же метод фильтрации через понимание списка.
from collections import Counter
from itertools import chain
dic = {('a','b'):2,('b','c'):4,('c','d'):6,('d','e'):8,('e','f'):8,('f','g'):3,('g','h'):2,('h','i'):7,('i','j'):10}
thresh = max(v for v in dic.values())/2 #This sets the threshold at half of max
less_thresh = [k for k,v in dic.items() if v < thresh] #This filters keys less than thresh
counter = Counter(chain.from_iterable(less_thresh))
for k,v in counter.items():
if v > 1:
print(k)
Output:
b
g