我将两个字典data_dict_var_1
和data_dict_var_2
嵌套在列表data_dicts
中。
这两个字典都包括三个关键字interoception
、exteroception
和cognitive
。每个键都包含一个数值数组,例如{'interoception': array([-1.10037122, -1.12865588, -0.70395085,... ]
。
我的目标如下:我想把三个键的数组合并到一个列表中。这是通过以下代码部分实现的:
all_rois = np.array([
data_dict["interoception"],
data_dict["exteroception"],
data_dict["cognitive"]
])
all_rois = np.hstack(all_rois)
使用for循环,我想合并两个字典的三个键的数组,而不是为每个字典单独重复代码。
此外,我想将data_dict_var_1
的合并数组附加到var_1_list = []
,而data_dict_var_2
的合并数组必须附加到var_2_list = []
。
以下是使下面描述的问题更容易理解的完整代码:
var_1_list = []
var_2_list = []
data_dicts = [data_dict_var_1, data_dict_var_2]
for data_dict in data_dicts:
all_rois = np.array([
data_dict["interoception"],
data_dict["exteroception"],
data_dict["cognitive"]
])
all_rois = np.hstack(all_rois)
if data_dict == data_dict_var_1:
var_1_list.append(all_rois)
elif data_dict == data_dict_var_2:
var_2_list.append(all_rois)
问题如下:Python为代码的以下if行返回ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
:if data_dict == data_dict_var_1:
。
我怎样才能最好地解决这个问题?我在其他问题中读到了这个ValueError,但我尝试的建议解决方案不适用于我的具体案例。
问题似乎是Python不理解我在if data_dict == data_dict_var_1:
中引用data_dict_var_1
。我必须以某种方式为这两个词典更多地指定这行代码。
我认为您无法检查字典是否相等。要解决您的问题,您可以尝试以下操作:
var_1_list = []
var_2_list = []
var_dict = {'var_1_list': [],
'var_2_list': []}
data_dicts = [data_dict_var_1, data_dict_var_2]
for i, data_dict in enumerate(data_dicts):
all_rois = np.array([
data_dict["interoception"],
data_dict["exteroception"],
data_dict["cognitive"]
])
all_rois = np.hstack(all_rois)
var_dict[f'var_{i+1}_list'].append(all_rois)