我有此代码:
import numpy as np
result = {}
result['depth'] = [1,1,1,2,2,2]
result['generation'] = [1,1,1,2,2,2]
result['dimension'] = [1,2,3,1,2,3]
result['data'] = [np.array([0,0,0]), np.array([0,0,0]), np.array([0,0,0]), np.array([0,0,0]), np.array([0,0,0]), np.array([0,0,0])]
for v in np.unique(result['depth']):
temp_v = np.where(result['depth'] == v)
values_v = [result[string][temp_v] for string in result.keys()]
this_v = dict(zip(result.keys(), values_v))
我要在其中创建一个名为“ dict
”的新this_v
,其键与原始字典result
相同,但值要少。
该行:
values_v = [result[string][temp_v] for string in result.keys()]
出现错误
TypeError:列表索引必须是整数,而不是元组
我不了解,因为我可以创建 ex = result[result.keys()[0]][temp_v]
了。只是不允许我使用for循环执行此操作,以便我可以填充列表。
关于它为什么不起作用的任何想法吗?
答案 0 :(得分:2)
我不确定您要实现什么目标,但是我可以解决您的问题:
np.where
返回一个元组,因此要访问它,必须给索引temp_v [0]。另外,元组的值是一个数组,因此要遍历该值,您需要运行另一个循环a for a in temp_v[0]
,以帮助您访问该值。
import numpy as np
result = {}
result['depth'] = [1,1,1,2,2,2]
result['generation'] = [1,1,1,2,2,2]
result['dimension'] = [1,2,3,1,2,3]
result['data'] = [np.array([0,0,0]), np.array([0,0,0]), np.array([0,0,0]), np.array([0,0,0]), np.array([0,0,0]), np.array([0,0,0])]
for v in np.unique(result['depth']):
temp_v = np.where(result['depth'] == v)
values_v = [result[string][a] for a in temp_v[0] for string in result.keys()]
this_v = dict(zip(result.keys(), values_v))