Python 类型错误:';int';对象是不可编辑的。为什么我会犯这个错误?请帮忙

Python 类型错误:';int';对象是不可编辑的。为什么我会犯这个错误?请帮忙,python,Python,因为kk=int(k) kk只是一个数字,不是一个数字数组 你想做什么,让我们帮你修复它?你在kk中为i设置了,而kk只是一个整数。不能迭代整数,只能迭代序列/iterable 如果您想从0迭代到(kk-1),,也许您的意思是 def get_top_k(frequency, k): temp = frequency key = "" tvalues = [] values = [] kk = int(k) i = 0 for i in t

因为
kk=int(k)

kk
只是一个数字,不是一个数字数组


你想做什么,让我们帮你修复它?

你在kk中为i设置了
,而
kk
只是一个整数。不能迭代整数,只能迭代序列/iterable

如果您想从0迭代到
(kk-1)
,也许您的意思是

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
有点离题,但:

for i in range(kk):
例如:

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)]
>>> 

xrange
也不会有什么坏处@Aviral(如果不是Python3.x:)进一步解释:如果确实需要迭代一系列数字,则内置函数range()非常方便。它生成包含算术级数的列表,例如:
>>范围(10)
[0,1,2,3,4,5,6,7,8,9]
(来源:)下面是3.3的“范围”链接-
>>> 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)]
>>>