假设我有一个包含5个字符串整数['2','2','4','3']的列表,现在我想将'2'的数字添加到第二个元素表示计数的列表中有多少'2'已经发生过。我怎么能这样做?
这是我到目前为止所尝试的:
def rankbikelist(list):
list_only_rank = [] * 5
count = [] * 13
rank = '123456789'
for i in range(len(list)):
list_only_rank += list[i][0]
for j in range(12):
count[j] = list_only_rank.count(rank[j])
return count
它给了我这个错误:列表分配索引超出范围
答案 0 :(得分:0)
首先你有一个4个字符串整数的列表而不是5
我不确定你要做什么。
也许有点改回这个问题所以我可以尝试提供帮助。
答案 1 :(得分:0)
您的问题来自初始化列表的方式。 [] * 13
实际上什么也没做。你的意思是[0] * 13
;但是,尽管它适用于这种情况,it's generally bad practice。
试试这个:
In [5]: L = ['2', '2', '4','3']
In [6]: answer = [0 for _ in range(10)]
In [7]: for i in L:
...: answer[int(i)] += 1
...:
In [8]: answer
Out[8]: [0, 0, 2, 1, 1, 0, 0, 0, 0, 0]
答案 2 :(得分:0)
您可以使用Counter
将计数作为字典获取并将其转换为列表:
from collections import Counter
items = ['2', '2', '4','3']
counts = Counter(items)
newlist = [ counts.get(str(x), 0) for x in range(10) ]
print newlist
给出:
[0, 0, 2, 1, 1, 0, 0, 0, 0, 0]