迭代di中dict的键中的值

2024-04-19 18:00:17 发布

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

我有以下代码:

dict_1= {

   'key1':{'key1':[.56,.75], 'key2':[]},
   'key2':{'key1':[.76,.95], 'key2':[]},
   'key3':{'key1':[.96,1.05],'key_2':[]}
  }
  def zones_calc(ftp):
      var_1 = ftp
      for i in dict_1.iteritems():
          for v in i['key_1']:
        i[key_2.append(var_1 * v)]
zones_calc(200)

我一直有个错误:

TypeError: tuple indices must be integers, not str

我对用python编写代码还很陌生,我正在利用这个机会来使用字典。我使用列表和元组使它运行良好,而且运行良好。我试图利用dict来保持我的倍数和结果都在dict中

很明显,我要做的是将“key_1”中的内容相乘,并将其附加到每个dict键中的“key_2”中。你知道吗

任何帮助都会很好。你知道吗


Tags: key代码in利用forvardefftp
2条回答

首先,您使用key_1在字典中查找,而您的字典中没有任何具有key_1值的键,您有多个key1,所以我假设这就是您想要的。你知道吗

其次,您想缩进i[key_2.append(var_1 * v)],并将其更改为类似于value['key2'].append(var_1 * v):我再次假设您希望key2作为字典中的键,而不是key_2,并且您还想获取值,而不是对var\u1值进行乘法(不向列表的索引中添加任何内容,这没有任何意义)。你知道吗

最后,当您在字典上进行迭代时,如果您不指定两个值,您的迭代上下文变量将是字典的键,如果您需要这些值,您将需要如下内容:

for key, value in dict_1.iteritems():,而不是for i in dict_1.iteritems():。你知道吗

如果我正确理解了你想要什么,这可能是一个解决方案:

dict_1= {

   'key1':{'key1':[.56,.75], 'key2':[]},
   'key2':{'key1':[.76,.95], 'key2':[]},
   'key3':{'key1':[.96,1.05],'key2':[]}
  }


def zones_calc(ftp):
    var_1 = ftp
    for key, value in dict_1.iteritems():
        for v in value['key1']:
            value['key2'].append(var_1 * v)

zones_calc(200)
print dict_1

输出:

$ python example11.py 
{'key3': {'key2': [192.0, 210.0], 'key1': [0.96, 1.05]}, 'key2': {'key2': [152.0, 190.0], 'key1': [0.76, 0.95]}, 'key1': {'key2': [112.00000000000001, 150.0], 'key1': [0.56, 0.75]}}

希望这有帮助。 请注意,我试图改变您的代码,以便工作,我没有试图使它更“pythonic”。你知道吗

希望这有帮助。:)

试试这个:

dict_1= {
   'key1':{'key1':[.56,.75], 'key2':[]},
   'key2':{'key1':[.76,.95], 'key2':[]},
   'key3':{'key1':[.96,1.05],'key2':[]}
}

def zones_calc(ftp):
    var_1 = ftp
    for v1 in dict_1.values():
        for v in v1['key1']:
            v1['key2'].append(var_1 * v)

zones_calc(200)

结果如下:

{'key3': {'key2': [192.0, 210.0], 'key1': [0.96, 1.05]},
 'key2': {'key2': [152.0, 190.0], 'key1': [0.76, 0.95]},
 'key1': {'key2': [112.00000000000001, 150.0], 'key1': [0.56, 0.75]}}

最后一行的小数部分是由于浮点舍入造成的:

>>> 0.56 * 200
112.00000000000001
>>>

相关问题 更多 >