我有一个字典,其中每个键都包含一个字典列表。
它看起来像:
my_dict = {"op1": varient_dict[0], varient_dict[1], varient_dict[2]..., "op2": varient_dict[0]...}
where varient_dict = {"length":0, "color":0...}
我想循环遍历嵌套字典中的值以找到最大值(然后将其存储在第二个字典中)
到目前为止,我已经尝试过:
for key in mydict:
for varient_dict in key:
if varient_dict["length"] > stats_dict[key]["max length"]:
varient_dict["max length"] = stats_dict[key]["length"]
我收到了错误:
TypeError: string indices must be integers
我相信我在字典中调用嵌套值不正确?或者我没有正确地迭代列表?有一个更好的方法吗? (对不起,如果它看起来很可怕,我是一个巨大的新手)
谢谢。
答案 0 :(得分:1)
for varient_dict in key:
遍历key
中的各个字符。您可能想要for varient_dict in mydict[key]
。
您也可以使用.items()
:
for key, varient_dict in mydict.items():
if varient_dict["length"] > stats_dict[key]["max length"]:
varient_dict["max length"] = stats_dict[key]["length"]
答案 1 :(得分:1)
您正在循环键,而不是值:
for key in mydict:
for varient_dict in key:
循环使用值:
for key in mydict:
for varient_dict in mydict[key]:
或循环遍历.iteritems()
结果:
for key, value in mydict.iteritems():
for varient_dict in value:
您的代码会循环遍历每个密钥的各个字符,因此varient_dict["length"]
会为字符串编制索引。
答案 2 :(得分:0)
这一行错了:
for varient_dict in key:
相反,你想这样做:
for varient_dict in mydict[key]:
在您的版本中,您迭代mydict
中您显然不想做的键的单个字符。这就是导致错误的原因。