从列表中删除方括号[](使用键排序时)

2024-10-05 12:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要的是:而不是像这样的列表输出:
['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() takes exactly one argument (2 given)

所以我去掉了naam | csgo部分来测试它:

print(", ".join(sorted(deelnemers, key=keyCSGO, reverse=True)))

但现在我得到了一个例外:sequence item 0: expected str instance, Deelnemer found

我想我看错了方向,所以我不确定从列表中删除[''''的位置。谢谢你的帮助和建议。你知道吗


Tags: keytrue列表reversescoresortedprintjoin
3条回答

使用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=', ')

您只能连接字符串,因此您可能需要在排序后访问每个实例的name属性(假设它是什么),以便在join中使用它们:

print(", ".join(d.name for d in sorted(deelnemers, key=keyCSGO, reverse=True)))

您还可以在加入之前使用字符串格式(credits@Tadhg)将属性放入字符串中:

", ".join("{0.name} {0.csgo} {0.score}".format(d) for d in sorted(deelnemers, key=keyCSGO, reverse=True))

str.join只能连接字符串。希望Deelnemer类定义了__str__方法,然后您可以执行以下操作:

print("Naam | CSGO Score\n        ")
print(", ".join(map(str, sorted(deelnemers, key=keyCSGO, reverse=True))))

相关问题 更多 >

    热门问题