2013-07-20 2 views
-1

если я попытаюсь удалить дубликаты, я получу TypeError ... Почему?Удалить дубликат в списке строк Тип Ошибка python

TempList = список (набор (TempList))

Ошибка: строка файла 29:: TypeError 'ул' объект не вызываемая #

Это реальный код:

# Lists all UI elements 
allUI=pm.lsUI()[24:28] 

#Main Window Name 
win='searchElementsUI' 
#Lists for UI Hierachy 
allSplitUI=[] 
maxLenUI=[] 
parentDict={} 

#Splits UI Elements 
for ui in allUI: 
    allSplitUI.append(ui.split('|')) 

#Max length of UISplit 
for ui in allSplitUI: 
    maxLenUI.append(len(ui)) 
maxLenUI=max(maxLenUI) 

#Adds main Parents to list 
tempList=[] 
for i in range(maxLenUI): 
    tempList=[] 
    for ui in allSplitUI: 
     try: 
      tempList.append(ui[i]) 

     except:pass 
    tempList=list(set(tempList)) 
    parentDict['list%s'%i]=tempList 

Здесь полное отслеживающий от майи:

# Lists all UI elements 
allUI=pm.lsUI() 

#Main Window Name 
win='searchElementsUI' 
#Lists for UI Hierachy 
allSplitUI=[] 
maxLenUI=[] 
parentDict={} 

#Splits UI Elements 
for ui in allUI: 
    allSplitUI.append(ui.split('|')) 

#Max length of UISplit 
for ui in allSplitUI: 
    maxLenUI.append(len(ui)) 
maxLenUI=max(maxLenUI) 

#Adds main Parents to list 
tempList=[] 
for i in range(maxLenUI): 
    tempList=[] 
    for ui in allSplitUI: 
     try: 
      tempList.append(ui[i]) 

     except:pass 
    tempList=list(set(tempList)) 
    parentDict['list%s'%i]=tempList 
# Error: 'str' object is not callable 
# Traceback (most recent call last): 
# File "<maya console>", line 29, in <module> 
# TypeError: 'str' object is not callable # 
+1

Это не ваш настоящий код. Вы не получите эту ошибку из этого кода. – Marcin

+0

Я добавил реальный код. Может быть, вы можете помочь – arvidurs

+1

Добавьте всю реальную стеклу. Кроме того, это еще не ваш реальный код, потому что 29-я строка не будет иметь эту ошибку. – Marcin

ответ

1

Как уже отмечалось, вы либо не опубликовали свой настоящий код, либо что-то очень странное происходит.

Однако, вы можете заменить почти весь сценарий с ниже строки:

import itertools 
alluis = set(itertools.chain.from_iterable(ui.split('|') for ui in pm.lsUI())) 

Это раскалывает, уплощается, и использует set для uniquify.

+0

Thanks Marcin, Я действительно новичок в написании сценариев, поэтому любая помощь очень ценится. То, что я на самом деле пытаюсь сделать, это создать простой иерархический макет с использованием cmds.treeView Он должен создать иерархию всех элементов ui в майе. С этим я могу добавить кнопки или таможенный контроль в любую часть майаса ui. Возможно, у вас есть более простой подход к этому. Itertools, помогает уже много! Спасибо – arvidurs

+0

@arvidurs Я не знаком с майей. Я предполагаю, что вы используете программу 3D-рендеринга, а не какую-нибудь другую майю. – Marcin

+0

Да, 3D-программное обеспечение. – arvidurs

0

Вы можете попробовать этот код:

#Convert to a set 
a =set(tempList) 

seen = set() 
result = [] 
for item in a: 
    if item not in seen: 
     seen.add(item) 
     result.append(item)