Я использую Python 3.8.3 на Windows 10. Мой код:
from itertools import zip_longest
def uniqify(passedlist):
seen = set()
unique = []
duplicate = []
for item in passedlist:
if item not in seen:
seen.add(item)
duplicate.append("") # add empty string for formatting output
unique.append(item)
elif item in seen:
duplicate.append(item)
unique.append("") # add empty string for formatting output
return unique, duplicate
listFruits = ["apple", "orange", "orange", "banana", "banana", "banana", "peach", "cherry", "cherry"]
listUnique, listDuplicate = uniqify(listFruits)
print(f"Fruits\t\tUnique\t\tDuplicates")
print(f"------\t\t------\t\t----------")
for num, (fruit, unique, duplicate) in enumerate(zip_longest(listFruits, listUnique, listDuplicate), start=1):
print(f"{num}: {fruit}\t{unique}\t\t{duplicate}")
Текущий выход:
Fruits Unique Duplicates
------ ------ ----------
1: apple apple
2: orange orange
3: orange orange
4: banana banana
5: banana banana
6: banana banana
7: peach peach
8: cherry cherry
9: cherry cherry
Я ищу отдельный счетчик для listUnique
и listDuplicate
в пределах for
l oop.
Желаемый результат:
Fruits Unique Duplicates
------ ------ ----------
1: apple 1. apple
2: orange 2. orange
3: orange 1. orange
4: banana 3. banana
5: banana 2. banana
6: banana 3. banana
7: peach 4. peach
8: cherry 5. cherry
9: cherry 4. cherry
Я искал по всему Inte rnet для это, но я не мог найти решение. В настоящее время я думаю о создании отдельных списков внутри uniqify()
с числами и вставке пустых строк для форматирования вывода.
Есть ли способ иметь отдельные счетчики для списков при использовании zip_longest()
?
Любые подсказки приветствуются.