Python 使用_str从带有dict的列表中返回键和值dict__
我尝试创建一个类,它会将值返回到pretty print。 我找到了这个帖子 但我仍然不明白我如何才能提高我的课 这是我的班级: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
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的答案,仅此而已。:-)@好的,我在答案中加了一段。