首页 > 解决方案 > 'str' 对象不能解释为整数:Python 错误

问题描述

我正在编写一个函数,它将接收两个字符串列表作为参数。我需要检查第二个列表中每个字符串在第一个列表中出现的次数并返回一个计数数组。我想从第一个数组中弹出找到的元素,以便在接下来的搜索中,我只需要移动较少的元素。但我在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

标签: pythonpython-3.xerror-handling

解决方案


您会在文档中找到:

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

所以i应该是一个索引,你给它一个字符串。您可能会更改为:

strings.pop(strings.index(i))

但这似乎是一种过度杀戮,而且您通过删除元素来提高效率的尝试也因为这条线:

while i in strings:

它可能不是明确的,但这条线每次都会循环列表。即使你让它更短,它也很多。

一种仅遍历列表 1 次的方法是使用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]

推荐阅读