Python 中的字典

Dicts in Python

我有一个多维字典,我需要return一个特定的值。

ConsomRatio={"DAP_Local":[],"MAP11_52":[]}
ConsomRatio["DAP_Local"].append({"Ammonia":"0.229", "Amine":"0.0007"})
ConsomRatio["MAP11_52"].append({"Ammonia":"0.138", "Fuel":"0.003"})

print(ConsomRatio["DAP_Local"])

打印结果为:

[{'Ammonia': '0.229', 'Amine': '0.0007'}]

我的问题是:有没有办法在 "DAP_Local" 中 return 仅 "Ammonia" 的值?

谢谢!

你可以这样理解。您将 dict 附加到 list,因此您必须 select listdict 所在的正确索引。在本例中,列表或索引中的第一个元素 0

ConsomRatio["DAP_Local"][0]["Ammonia"]

顺便说一句,根据您想要实现的目标,您可能想看看其他针对多维指令的不同实现的答案。

由于print(ConsomRatio["DAP_Local"]) returns长度为1的数组,需要select索引0,然后如上键关闭'Ammonia'值。

如果 print(ConsomRatio["DAP_Local"]) 返回一个字典,那么不需要 [0]print(ConsomRatio["DAP_Local"]['Amomonia']) 就可以了

你为什么要把列表放在你的字典里?您可以只在主词典中使用词典。

你也可以有没有列表的多维字典,例如:

ConsomRatio = {}
ConsomRation["DAP_Local"] = {"Ammonia":"0.229", "Amine":"0.0007"}
ConsomRatio["MAP11_52"] = {"Ammonia":"0.138", "Fuel":"0.003"}

print(ConsomRatio["DAP_Local"]["Ammonia"])

无需对列表进行额外操作即可获得所需结果。

你可以在 Python 中变得更短:

ConsomRatio = {
   "DAP_Local": {"Ammonia":"0.229", "Amine":"0.0007"},
   "MAP11_52" : {"Ammonia":"0.138", "Fuel":"0.003"},
}

print(ConsomRatio["DAP_Local"]["Ammonia"])

同时回答您的最新问题(在您的第二条评论中):

to_produce  = 'DAP_Local'
ingredience = 'Ammonia'
print('To produce {to_produce} we need {amount} of {ingredience}'.format(
      to_produce=to_produce, ingredience=ingredience,
      amount=ConsomRatio[to_produce].get(ingredience, '0.0')))

希望对您有所帮助!

它变得更好:

for product, ingred_list in ConsomRatio.items(): 
    for iname, ivalue in ingred_list.items(): 
        print('To produce {to_produce} we need {amount} of {ingredience}'
              .format(to_produce=product, ingredience=iname, 
                      amount=ivalue))

其他答案当然是正确的,但是您是否考虑过使用"dict of dicts"?即:

ConsomRatio={"DAP_Local":{},"MAP11_52":{}}
ConsomRatio["DAP_Local"].update({"Ammonia":"0.229", "Amine":"0.0007"})
ConsomRatio["MAP11_52"].update({"Ammonia":"0.138", "Fuel":"0.003"})

print ConsomRatio["DAP_Local"]["Ammonia"]
0.229