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

时间:2016-10-25 16:23:50

标签: 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(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

我认为我正朝着错误的方向前进,所以我不确定在哪里可以看到['' ]从列表中删除。感谢您的帮助和建议。

3 个答案:

答案 0 :(得分:2)

str.join只能加入字符串。希望Deelnemer类定义了__str__方法,然后你可以这样做:

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

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

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