Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字典中的嵌套列表存在浮点错误_Python_Dictionary_Floating Point - Fatal编程技术网

Python 字典中的嵌套列表存在浮点错误

Python 字典中的嵌套列表存在浮点错误,python,dictionary,floating-point,Python,Dictionary,Floating Point,我有一本有很多键的字典,每个键都有一个坐标列表(x,y,r),每个都有自己的列表。当我试图访问这些坐标值时,我遇到了一个大问题。我得到一个错误,比如说TypeError:“float”对象不可编辑。我正在尝试将我的字典转换为一个类似的新字典,但允许我访问这些值 比如说,, 旧:{key:[[x,y,r],[x,y,r],…] 新:{key:[(x,y),(x2,y2),…]} 最大的问题是它们是浮点数,我似乎无法访问它们以将其更改为整数值 这是我的字典看起来的样子,但是包含了更多的键,这些键可以

我有一本有很多键的字典,每个键都有一个坐标列表(x,y,r),每个都有自己的列表。当我试图访问这些坐标值时,我遇到了一个大问题。我得到一个错误,比如说
TypeError:“float”对象不可编辑。我正在尝试将我的字典转换为一个类似的新字典,但允许我访问这些值

比如说,, 旧:
{key:[[x,y,r],[x,y,r],…]
新:
{key:[(x,y),(x2,y2),…]}

最大的问题是它们是浮点数,我似乎无法访问它们以将其更改为整数值

这是我的字典看起来的样子,但是包含了更多的键,这些键可以/确实在值列表中包含更多的坐标

{'0-0.png'] : [[99.0, 11.0, 2.8284271247461903], [17.0, 30.0, 2.8284271247461903]]}
我丑陋的代码:

```

def正确的_坐标(dic):
大_第一=0
大_秒=0
第一个=0
秒=0
而第一个<82:
image='{}-{}.png'。格式(先大后小)
如果秒数小于14:
im='{}-{}.png'。格式(第一,第二)
如果img_计数小于4:
新的_坐标=[]
对于dic[im]中的Coor:
打印(np.数组(coors))
打破
新的坐标=[c+(226*img\U计数)用于dic中的坐标[im]用于c中的坐标]
打印(新坐标)
打破
coor_226[图像].扩展(新的_坐标)
秒+=1
img_计数+=1
elif img_计数==4:
新的坐标=[c+(226*img\U计数)用于dic中的坐标[im]用于c中的坐标]
coor_226[图像].扩展(新的_坐标)
秒+=1
img_计数=0
elif second==14:
im='{}-{}.png'。格式(第一,第二)
新的坐标=[c+(226*img\U计数)用于dic中的坐标[im]用于c中的坐标]
coor_226[图像].扩展(新的_坐标)
大f+=1
大s=0
第一+=1
秒=0
最终坐标=第二次修正坐标(坐标226)
对于final_coors.keys()中的k:
arr=np.array(final_coors[k])
arr=list(zip(arr[0::3],arr[1::3]))
最终成本[k]=arr
pickle.dump(final_coors,open('../data/corr_coor_dict.pkl','wb'))
```


big_first
big_second
只是指标有这些值的较大图像。

您可以迭代dic项目,然后使用列表理解生成新值,如下所示:

dic = {'key1': [[5.3, 5.5, 1.1], [2.2, 3.3, 1.1]], 'key2': [[5.3, 5.5, 1.1], [2.2, 3.3, 1.1]]}
newdic = {}
for k, v in dic.items():
    newdic[k] = [(i[0], i[1]) for i in v]
print newdic
dic = {'key1': [[5.3, 5.5, 1.1], [2.2, 3.3, 1.1]], 'key2': [[5.3, 5.5, 1.1], [2.2, 3.3, 1.1]]}
newdic = {k: [(i[0], i[1]) for i in v] for k, v in dic.items()}
print newdic
输出:

{'key2': [(5.3, 5.5), (2.2, 3.3)], 'key1': [(5.3, 5.5), (2.2, 3.3)]}
您还可以使用字典理解而不是循环,如下所示:

dic = {'key1': [[5.3, 5.5, 1.1], [2.2, 3.3, 1.1]], 'key2': [[5.3, 5.5, 1.1], [2.2, 3.3, 1.1]]}
newdic = {}
for k, v in dic.items():
    newdic[k] = [(i[0], i[1]) for i in v]
print newdic
dic = {'key1': [[5.3, 5.5, 1.1], [2.2, 3.3, 1.1]], 'key2': [[5.3, 5.5, 1.1], [2.2, 3.3, 1.1]]}
newdic = {k: [(i[0], i[1]) for i in v] for k, v in dic.items()}
print newdic

[x,y,r]
变成
(x,y)
的背后的“逻辑”是什么?你能用有问题的部分展示一下你的代码样本吗?目前提供的信息很难解读和提供帮助。如果没有一点代码或片段(样本),就很难给出有用的建议或具体的答案你的字典数据。请提供你正在使用的代码和字典,我们很乐意提供帮助。没有必要在你的标题中添加“请帮助!”。很明显,你需要帮助,否则你就不会在这里发布问题。避免标题和问题体中出现无关的、无用的噪音,具体说明你需要什么在您提出问题时,包括代码的相关部分,并提出具体问题,我们可以尝试提供帮助。请帮助我根本不是问题;您还应该看到“float is not iterable”可能意味着您的for循环中有一个是在浮点数上迭代的,而您认为它是在列表上迭代的。很难从提供的信息。好的,我不会再重复了。我只是觉得我的代码可能更糟,所以我尝试给出一个架构的场景,但我现在就添加它。如果使用python