0

我有一本字典,其中每个键都包含一个字典列表。

它看起来像:

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

我相信我错误地调用了字典中的嵌套值?或者我没有正确地遍历列表?有一个更好的方法吗?(对不起,如果它看起来很糟糕,我是一个巨大的新手)

谢谢你。

4

3 回答 3

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"]
于 2013-07-28T09:40:06.687 回答
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"]索引一个字符串。

于 2013-07-28T09:40:24.863 回答
0

这一行是错误的:

for varient_dict in key:

相反,你想这样做:

for varient_dict in mydict[key]:

在您的版本中,您遍历mydict显然不想在其中执行的键的单个字符。这就是导致错误的原因。

于 2013-07-28T09:40:13.470 回答