错误:字符串索引必须是整数,字典python中的字典列表

时间:2013-07-28 09:33:27

标签: python dictionary

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

它看起来像:

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

我相信我在字典中调用嵌套值不正确?或者我没有正确地迭代列表?有一个更好的方法吗? (对不起,如果它看起来很可怕,我是一个巨大的新手)

谢谢。

3 个答案:

答案 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中您显然不想做的键的单个字符。这就是导致错误的原因。