/ / Python 3.4 перетворення помилок в список: "tuple" об'єкт не викликається - python

Python 3.4 error converting set to list: об'єкт 'tuple' не можна викликати - python

У мене проблема з перетворенням набору у список за допомогою 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.

Будь ласка, зрозумійте, що мова програмування призначена для пошуку більш простого вирішення проблеми ефективним способом.