У мене проблема з перетворенням набору у список за допомогою Python 3.4.4. Я безуспішно намагаюся функцію list_duplicates в Знайти і перерахувати дублікати в списку?:
def list_duplicates(seq):
seen = set()
seen_add = seen.add
seen_twice = set( x for x in seq if x in seen or seen_add(x) )
return list( seen_twice )
a = [1,2,3,2,1,5,6,5,5,5]
list_duplicates(a) # yields [1, 2, 5]
Я отримую помилку "" кортежу "об'єкт не викликається" на лінії список повернення (seen_twice)
Я отримую ідентичну помилку з більш простим прикладом
a = set(["Blah", "Hello"])
a = list(a)
Це особлива проблема з Python 3.4 або я роблю щось явно неправильне?
Відповіді:
1 для відповіді № 1Я не розумію, чому ви робите всі ці ускладнення, якщо знаходите дублікати в списку і перераховуєте їх як новий список, то ви можете просто зробити це
a = [1,2,3,2,1,5,6,5,5,5]
Duplicates=[]
for i in set(a):
if a.count(i) > 1:
Duplicates.append(i)
print Duplicates #this will give you list of duplicates
Якщо ви хочете словник з кількістю дублікатів, то ви можете слідувати цьому
a = [1,2,3,2,1,5,6,5,5,5]
Duplicates={}
for i in set(a):
if a.count(i) > 1:
Duplicates[i] = a.count(i)
print Duplicates # this will give you duplicates as a dictionary with duplicate no as key and no of duplicates as value.
Будь ласка, зрозумійте, що мова програмування призначена для пошуку більш простого вирішення проблеми ефективним способом.