TypeError:对象没有属性''

2024-10-03 15:22:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我看了另一篇有这个标题的帖子,但我很困惑,因为我的值已经是整数了。我希望脚本查看每个键的值(一个包含多个值的数组),通过使数组成为一个列表对数组进行排序,然后迭代经过排序和转换的列表的值,从第二个值减去第一个值,然后从第三个值中减去第二个值,依此类推,将差异存储在列表中。在

b = {"a":[5,2,1],"b":[8,4,3]}

for k in b.values():
    eVals = []
    #print listVals
    x = 0
    for i in sorted(k):
        dif = i[x+1] - i[x]
        print dif
        eVals.append(dif)
        x +=1

错误如下:

^{pr2}$

Tags: in脚本标题列表for排序整数数组
2条回答

您试图在int上使用__getitem__。在

这里有一个可能的解决方案

inp  = {"a":[5,2,1],"b":[8,4,3]}

out = {}
for key, lis in inp.iteritems():
    difLis = []
    sLis = sorted(lis)
    for i, _ in enumerate(sLis[:-1]):
        dif = sLis[i+1] - sLis[i]
        print "%d - %d = %d" % (sLis[i+1], sLis[i], dif)
        difLis.append(dif)
    out[key] = difLis
print out # {'a': [1, 3], 'b': [1, 4]}
>>> b = {"a":[5,2,1],"b":[8,4,3]}
>>> for key, value in b.iteritems():
...     value.sort()
...     value[:] = [cur-prev for cur, prev in zip(value, [0] + value[:-1])] 
...     
>>> b
{'a': [1, 1, 3], 'b': [3, 1, 4]}

如果您可以方便地使用numpy,您可以在一行代码理解中执行此操作:

^{pr2}$

相关问题 更多 >