我尝试创建类,它将返回值为漂亮的打印。 我找到了这篇文章python __str__ for an object 但我仍然无法理解如何改善我的课程。
这是我的班级:
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)
和第一次返回的错误:
return ','.join(str(item),'->',str(item[x]) for x in item) for item in self.lista
^
SyntaxError: invalid syntax
我尝试获得以下结果: key_dict-> value_dict等
答案 0 :(得分:3)
你的理解/生成器表达式中肯定有一个无效的语法。
您应该编写如下表达式
return ','.join("{}->{}".format(item, item[x]) for x in item for item in self.lista)
<强> Offtopic 强>
作为@MartijnPieter,对于str.join
,使用列表推导而不是生成器表达式的速度更快,特别是因为它需要在拼接它们之前生成数据(两遍算法)。请参阅list comprehension without [ ], Python