所以我有一个Python脚本,它读取一个篮球游戏的逐个播放的.csv文件来计算一个加/减的阵容。它以玩家姓氏列表的形式跟踪场上当前的玩家,当一个团队有两个姓氏相同的玩家时,我会遇到错误(逐个播放的数据不使用名字,只有数字和姓氏,我不记录他们的数字)。当我在其中一个重复名称上使用lineup.remove(播放器)时,问题就出现了,它会从列表中删除它们。有没有一种简单的方法可以只删除一个,如果有,我可以指定哪个?
示例列表将是
['JONES', 'PATTERSON', 'SMITH', 'JONES', 'WILLIAMS']
答案 0 :(得分:4)
来自文档:
list.remove(x)的 从列表中删除值为x的第一个项目。如果没有这样的项目,则会出错。
lineup = ['JONES', 'PATTERSON', 'SMITH', 'JONES', 'WILLIAMS']
lineup.remove('JONES') #should just remove the first occurrence of JONES
答案 1 :(得分:0)
list = ['JONES', 'PATTERSON', 'SMITH', 'JONES', 'WILLIAMS']
cleared_list = dict((x, 1) for x in list).keys()
但是,此列表不保留订单。
这个保留订单,但稍微复杂一点:
list = ['JONES', 'PATTERSON', 'SMITH', 'JONES', 'WILLIAMS']
from itertools import count
seq = count()
d = {}
for x in list:
d.setdefault(x, seq.next())
l = d.items();
l.sort(lambda x, y: cmp(x[1], y[1]))
cleared_list = [x[0] for x in l]