Python 从列表中删除括号[](使用键排序时)
我想要的是:而不是像这样的列表输出:Python 从列表中删除括号[](使用键排序时),python,python-3.x,Python,Python 3.x,我想要的是:而不是像这样的列表输出: ['test1','test2',test3'] 我希望它输出如下: test1 | test2 | test3或者这也可以test1、test2、test3 我的代码:现在看起来是这样的: deelnemers = [] # i add name, csgo and score to deelnemers[] via class Deelnemer deelnemers.append(Deelnemer(naam, int(csgo), int(s
['test1','test2',test3']
我希望它输出如下:test1 | test2 | test3
或者这也可以test1、test2、test3
我的代码:现在看起来是这样的:
deelnemers = []
# i add name, csgo and score to deelnemers[] via class Deelnemer
deelnemers.append(Deelnemer(naam, int(csgo), int(score)))
# key to sort it by csgo value
def keyCSGO(deelnemer):
return deelnemer.csgo
# i print it in reverse so the highest csgo number will be first
print("\nNaam | CSGO Score\n----------------\n", sorted(deelnemers, key=keyCSGO, reverse=True))
我尝试过的:
print(", ".join("\nNaam | CSGO Score\n----------------\n", sorted(deelnemers, key=keyCSGO, reverse=True)))
很明显,上面给出了一个参数。join:join()只接受一个参数(给定2个)
因此,我删除了naam | csgo部分来测试它:
print(", ".join(sorted(deelnemers, key=keyCSGO, reverse=True)))
但现在我得到了这个异常:sequence item 0:expected str instance,Deelnemer found
我认为我看错了方向,所以我不确定从列表中删除['']的位置。谢谢您的帮助和建议。
str.join
只能连接字符串。希望Deelnemer
类定义了一个\uuuu str\uuuu
方法,然后您可以执行以下操作:
print("Naam | CSGO Score\n----------------")
print(", ".join(map(str, sorted(deelnemers, key=keyCSGO, reverse=True))))
str.join
只能连接字符串。希望Deelnemer
类定义了一个\uuuu str\uuuu
方法,然后您可以执行以下操作:
print("Naam | CSGO Score\n----------------")
print(", ".join(map(str, sorted(deelnemers, key=keyCSGO, reverse=True))))
您只能连接字符串,因此您可能需要在排序后访问每个实例的name
属性(假设它是什么),以便在join
中使用它们:
print(", ".join(d.name for d in sorted(deelnemers, key=keyCSGO, reverse=True)))
您还可以使用字符串格式(credits@Tadhg)在加入之前将属性放入字符串中:
您只能连接字符串,因此您可能需要在排序后访问每个实例的name
属性(假设它是什么),以便在join
中使用它们:
print(", ".join(d.name for d in sorted(deelnemers, key=keyCSGO, reverse=True)))
您还可以使用字符串格式(credits@Tadhg)在加入之前将属性放入字符串中:
使用
str.join
的替代方法是让print
为您做更多的工作;它很高兴将分隔符串接并插入:
from operator import attrgetter
# Print header normally, but let print handle the newlines and separate lines
# so alignment of header and bar more obvious
# You original code was one hyphen short (which I fixed)
print("Naam | CSGO Score",
"-----------------", sep="\n")
# Use *-unpacking to convert sorted list to sequential positional arguments
# and pass sep=', ' to replace default sep of ' '.
# Use attrgetter instead of rolling your own key function
print(*sorted(deelnemers, key=attrgetter('csgo'), reverse=True), sep=', ')
使用
str.join
的替代方法是让print
为您做更多的工作;它很高兴将分隔符串接并插入:
from operator import attrgetter
# Print header normally, but let print handle the newlines and separate lines
# so alignment of header and bar more obvious
# You original code was one hyphen short (which I fixed)
print("Naam | CSGO Score",
"-----------------", sep="\n")
# Use *-unpacking to convert sorted list to sequential positional arguments
# and pass sep=', ' to replace default sep of ' '.
# Use attrgetter instead of rolling your own key function
print(*sorted(deelnemers, key=attrgetter('csgo'), reverse=True), sep=', ')
因此,我的类定义了一个_uuuu _uuu _uu _uu _u _u _u。我只是添加了_; str __;和名称,csgo,score属性?对不起,如果这是一个愚蠢的问题。这取决于你想在表中列出什么。名字?然后你可以按照摩西·科雷多耶的建议去做,或者让
\uuu str\uuuu
返回self.name
。还有别的吗?然后返回它,只需确保返回的是字符串。我想返回name、csgo或name | csgo(类似这样的内容),如果这是您想要打印的内容,请使用\uu str\uu
返回self.name
,正如我所说的,或者从另一个答案中复制解决方案,以便于理解。@Tadhgmandald Jensen我从原始字符串中删除了一个尾随的\n
,因此我认为这是不必要的。因此,我的类定义了一个uuuu_uu_u_u_u_u_u_u_u_u_u_u_u_u_____________。我只是添加了_; str __;和名称,csgo,score属性?对不起,如果这是一个愚蠢的问题。这取决于你想在表中列出什么。名字?然后你可以按照摩西·科雷多耶的建议去做,或者让\uuu str\uuuu
返回self.name
。还有别的吗?然后返回它,只需确保返回的是字符串。我想返回name、csgo或name | csgo(类似这样的内容),如果这是您想要打印的内容,请使用\uu str\uu
返回self.name
,正如我所说的,或者从另一个答案中复制解决方案,以便于理解。@TadhgMcDonald Jensen我从原始字符串中删除了一个尾随的\n
,因此我认为没有必要这样做。旁注:简单的属性查找不需要编写自己的函数<代码>从操作员导入属性器,然后将key=keyCSGO
替换为key=attrgetter('csgo')
。将更多工作推到C层,更加灵活(要按第二个字段排序,只需将其设置为attrgetter('csgo','secondattrname')
)等。旁注:您不需要编写自己的函数来进行简单的属性查找<代码>从操作员导入属性器,然后将key=keyCSGO
替换为key=attrgetter('csgo')
。将更多工作推到C层,更加灵活(要按第二个字段排序,只需将其设置为attrgetter('csgo','secondattrname')
)等。仅使用问题中的信息,您甚至无法确保Deelnemer
对象具有name
属性,更有用的是,只需声明获取每个对象的字符串表示形式的逻辑将位于当前具有d.name
的位置。对我来说,最明显的解决方案是str(d)
。有可能有更多像d.name这样的字符串吗?假设我要d.name,d.csgo。因此,我给出的不是1个属性,而是2或3个属性。我的意思是:print(“,”.join(d.name,d.csgo,d.score for d in sorted(deelnemes,key=keyCSGO,reverse=True))
@FatalRein处理字符串与使用print函数不同,print函数将所有内容转换为字符串并添加分隔符,如果你想自己处理这个部分,你需要做一些类似于,“.join(“{0.name}{0.csgo}{0.score}.”的事情。按排序(deelnemers,key=keyCSGO,reverse=True)的格式(d)
@tadhgmdonald Jensen谢谢你注意到这一点。伙计们,我真是太感谢你们了。最后一部分做到了:{0.xx}非常感谢你们所有帮助我解决问题的人,你们甚至不能确定Deelnemer
对象是否有.name
属性,更有用的是,只需声明获取每个对象的字符串表示形式的逻辑将位于当前具有d.name
的位置。对我来说,最明显的解决方案是str(d)
。有可能有更多像d.name这样的字符串吗?假设我要d.name,d.csgo。因此,我给出的不是1个属性,而是2或3个属性。我的意思是:p