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