Python 使用_str从带有dict的列表中返回键和值dict__

Python 使用_str从带有dict的列表中返回键和值dict__,python,dictionary,Python,Dictionary,我尝试创建一个类,它会将值返回到pretty print。 我找到了这个帖子 但我仍然不明白我如何才能提高我的课 这是我的班级: class PrintList(): def __init__(self,lista): self.lista=lista def __str__(self): if isinstance(x[0] in self.lista, dict): #for dicts in list

我尝试创建一个类,它会将值返回到pretty print。 我找到了这个帖子 但我仍然不明白我如何才能提高我的课

这是我的班级:

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\u dict->value\u dict等。

您的理解/生成器表达式中肯定有无效语法

你应该把这个表达写成如下

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


作为@MartijnPieter,对于
str.join
,使用列表理解比使用生成器表达式更快,这主要是因为它需要在将数据拼接到一起之前生成数据(一种两遍算法)。请参考

您的理解/生成器表达式中肯定存在无效语法

你应该把这个表达写成如下

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


作为@MartijnPieter,对于
str.join
,使用列表理解比使用生成器表达式更快,这主要是因为它需要在将数据拼接到一起之前生成数据(一种两遍算法)。请参考

您的理解/生成器表达式中肯定存在无效语法

你应该把这个表达写成如下

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


作为@MartijnPieter,对于
str.join
,使用列表理解比使用生成器表达式更快,这主要是因为它需要在将数据拼接到一起之前生成数据(一种两遍算法)。请参考

您的理解/生成器表达式中肯定存在无效语法

你应该把这个表达写成如下

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


作为@MartijnPieter,对于
str.join
,使用列表理解比使用生成器表达式更快,这主要是因为它需要在将数据拼接到一起之前生成数据(一种两遍算法)。请参考

我将使用列表理解,而不是生成器表达式;
str.join()
的速度更快。看@MartijnPieters:我知道。我只是使用与OPs相同的格式,没有引入新概念或脱离主题。如果您看到,OP已经在使用生成器表达式,我认为将其转换为list.shrug是没有意义的。我想添加一个额外的段落,说明列表比较好,并链接到Raymond的答案,仅此而已。:-)@MartijnPieters:好的,我在答案中添加了一段。我会使用列表理解,而不是生成器表达式;
str.join()
的速度更快。看@MartijnPieters:我知道。我只是使用与OPs相同的格式,没有引入新概念或脱离主题。如果您看到,OP已经在使用生成器表达式,我认为将其转换为list.shrug是没有意义的。我想添加一个额外的段落,说明列表比较好,并链接到Raymond的答案,仅此而已。:-)@MartijnPieters:好的,我在答案中添加了一段。我会使用列表理解,而不是生成器表达式;
str.join()
的速度更快。看@MartijnPieters:我知道。我只是使用与OPs相同的格式,没有引入新概念或脱离主题。如果您看到,OP已经在使用生成器表达式,我认为将其转换为list.shrug是没有意义的。我想添加一个额外的段落,说明列表比较好,并链接到Raymond的答案,仅此而已。:-)@MartijnPieters:好的,我在答案中添加了一段。我会使用列表理解,而不是生成器表达式;
str.join()
的速度更快。看@MartijnPieters:我知道。我只是使用与OPs相同的格式,没有引入新概念或脱离主题。如果您看到,OP已经在使用生成器表达式,我认为将其转换为list.shrug是没有意义的。我想添加一个额外的段落,说明列表比较好,并链接到Raymond的答案,仅此而已。:-)@好的,我在答案中加了一段。