2014-09-26 44 views
0

我嘗試創建類,它將返回值漂亮打印。 我發現這個職位python __str__ for an object 但我仍然不明白我怎麼能提高我的班級。返回鍵和值字典從列表使用__str__

這裏是我的類:

class PrintList(): 
    def __init__(self,lista): 
     self.lista=lista 
    def __str__(self): 
     if isinstance(x[0] in self.lista, dict):   #for dicts in list 
      return ','.join(str(item),'->',str(item[x]) for x in item) for item in self.lista 
     else:   # for variables in list 
      return ','.join(str(x) for x in self.lista) 

和bug在第一回:

return ','.join(str(item),'->',str(item[x]) for x in item) for item in self.lista 
                   ^
SyntaxError: invalid syntax 

我試圖得到以下結果: key_dict-> value_dict等

回答

3

你肯定在理解/生成器表達式中有無效的語法。

你應該有書面表達如下

return ','.join("{}->{}".format(item, item[x]) for x in item for item in self.lista) 

Offtopic

至於@MartijnPieter,爲str.join,其更快地使用列表理解,而不是一臺發電機的表達顯着,因爲它需要在拼接之前生成數據(兩遍算法)。請參考list comprehension without [ ], Python

+1

我會使用列表理解而不是生成器表達式; 'str.join()'*更快*。參見[list comprehension without \ [\],Python](http://stackoverflow.com/a/9061024) – 2014-09-26 08:54:16

+0

@MartijnPieters:我知道。我只是使用與OP相同的格式,而沒有引入新的概念或脫離主題。如果你看到,OP已經使用了一個生成器表達式,並且我認爲將它轉換爲列表並不合適。 – Abhijit 2014-09-26 08:57:25

+0

*聳肩*。我會添加一個額外的段落,解釋列表符合在這裏是更好的選擇,並鏈接到雷蒙德的答案,就是這樣。 :-) – 2014-09-26 08:59:29

相關問題