使用__str__从带有dicts的列表返回键和值dict

时间:2014-09-26 08:35:53

标签: python dictionary

我尝试创建类,它将返回值为漂亮的打印。 我找到了这篇文章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等

1 个答案:

答案 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