Вы можете попробовать это, используя Counter
Counter
, который используется для подсчета числа появлений объектов, которые могут быть хеш-объектами.
from collections import Counter
l=[4, 3, 1, 2, 3, 1, 1, 3, 5, 1, 2, 2]
c=Counter(l)
# Counter({4: 1, 3: 3, 1: 4, 2: 3, 5: 1})
[(k,k) for k,v in c.items() for _ in range(v//2)]
# [(3, 3), (1, 1), (1, 1), (2, 2)]
Итак, здесь ключ k
будет числом, а значение v
будет количеством раз, когда это произошло в списке. Так как вы хотели, чтобы пары получили количество пар, я сделал v//2
. Вышеупомянутый подход в понимании однострочного списка будет
[(k,k) for k,v in Counter(l).items() for _ in range(v//2)]
Использование dict.fromkeys
. Просто подражая тому, что Counter
делает здесь.
c=dict.fromkeys(l,0)
for k in l:
c[k]+=1
[(k,k) for k,v in c.items() for _ in range(v//2)]