替换嵌套字典中的值

2024-09-28 20:59:49 发布

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

对于每个列表列表,我想用x[2]替换x[2],但是遇到语法错误。在

My_dict = {
    'dataset 1': {'Subset' : [[1,4,2],[4,5,5]], 'key' : ['rand1', 'rand2']},
    'Dataset 2': {'Subset' : [[4,3,4],[3,4,2]], 'key' : ['rand4', 'rand3']}
    }

for key in My_dict:
   My_dict[key]['Subset'] = [x[1] = x[2] for x if x[2] == 2]
   print My_dict[key]['Subset']

期望输出:

^{pr2}$

Tags: keyin列表forifmydatasetdict
2条回答

也许亚历克斯的答案是最好的

  1. 你想要使用列表理解,并且
  2. 您不介意生成和分配新列表,而不是对原始列表进行更改

还有一个替代方案:

for sub_dict in My_dict.itervalues():
    sub_dict['Subset'] = [x[:1] + x[2:3] + x[2:] if x[2] == 2 else x for x in sub_dict['Subset']]
    print sub_dict['Subset']

编辑因为您从来没有使用key值,所以我更改了for循环以直接使用itervalues()返回的子字典。在

列表理解以一个表达式开始,而Python中的赋值(正如您尝试的那样)是一个语句而不是一个解释问题语法错误部分的表达式。在

(还有其他语法错误,比如for x后面没有in,因此Python实际上可能正在诊断其中任何一个语法错误)。在

由于要指定,请使用普通循环,例如:

for key in My_dict:
   for x in My_dict[key]['Subset']:
       if x[2] == 2: x[1] = x[2]

相关问题 更多 >