'str'对象不能解释为整数:Python错误

时间:2020-02-02 20:18:15

标签: python python-3.x error-handling

我正在编写一个函数,该函数将接收两个字符串列表作为参数。 我需要检查第二个列表中的每个字符串在第一个列表中出现的次数,并返回计数数组。我想到了从第一个数组中弹出找到的元素,以便在以后的搜索中,我只需要旅行较少的元素。但是我在strings.pop(i)上收到此错误。

def matchingStrings(strings, queries):
    a=[0 for i in range(len(queries))]
    j=0
    for i in queries :    
        while i in strings :
            a[j]=a[j]+1
            strings.pop(i)
        j=j+1
    return a

1 个答案:

答案 0 :(得分:0)

您会在docs中发现:

s.pop([i])-在 i 处检索项目,并将其从 s

中删除

因此,i应该是索引,并且您要给它一个字符串。您可能会更改为:

strings.pop(strings.index(i))

但这似乎是一个过大的杀伤力,而且您尝试通过删除元素来使事情更高效的想法也因行而来:

while i in strings:

它可能不是明确的,但是此行每次都会循环列表。而且,即使您将其缩短,它也很多。

一种只在列表上进行一次 的方法是使用Counter

from collections import Counter

strings = ["apple", "orange", "banana", "apple", "banana"]
queries = ["apple", "orange", "potato"]

c = Counter(strings)
res = [c[q] for q in queries]
print(res)

礼物:

[2, 1, 0]