TypeError:'int'对象不可迭代。为什么会出现这个错误?请帮忙

3 投票
4 回答
27768 浏览
提问于 2025-04-16 16:36

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常会把它们转换成一种特定的格式。

比如说,如果我们从一个网页上获取了一些信息,这些信息可能是以文本的形式存在的。为了方便后续的处理,我们可能需要把这些文本转换成程序可以直接使用的格式,比如数字、列表或者字典。

在这个过程中,我们可能会用到一些工具或者库,这些工具可以帮助我们快速地完成转换工作,而不需要自己手动去处理每一条数据。

总之,数据转换是编程中一个非常重要的环节,它能帮助我们更好地管理和使用数据。

def get_top_k(frequency, k):
    temp = frequency
    key = ""
    tvalues = []
    values = []
    kk = int(k)
    i = 0
    for i in temp.keys():
        key = i
        num = [int(frequency[key])]
        tvalues += num
    tvalues = bubble_sort(tvalues)
    i = 0
    for i in kk:
        num = [int(tvalues[i])]
        values += num
    print(values)
    i = 0
    result = {}
    for i in kk:
        result += {(str(temp[values[i]])):(int(values[i]))}
    return result

4 个回答

2

你有一个代码是 for i in kk,而 kk 其实只是一个整数。你不能对一个整数进行循环,只能对一个序列或者可迭代的东西进行循环。

如果你想从 0 循环到 (kk-1),你可能想用 for i in range(kk)

3

有点跑题,不过:

for i in temp.keys():
    key = i
    num = [int(frequency[key])]
    tvalues += num

should just be:

tvalues = temp.values()

举个例子:

>>> D = {'a':1, 'b':2, 'c':3, 'd':4}
>>> D.keys()
['a', 'c', 'b', 'd']
>>> D.values()
[1, 3, 2, 4]
>>> D.items()
[('a', 1), ('c', 3), ('b', 2), ('d', 4)]
>>> 

看起来你的代码可以改成这样:

>>> D = {'a':1, 'b':2, 'c':3, 'd':4}
>>> def get_top_k(D, k):
...     return sorted(D.items(), reverse=True, key=lambda x: x[1])[:k]
... 
>>> get_top_k(D, 2)
[('d', 4), ('c', 3)]
>>> 
6

也许你想说的是

for i in range(kk):

撰写回答