Python中的Dicts

Python中的Dicts,python,dictionary,Python,Dictionary,我有一个多维dict,我需要返回一个特定的值 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"]) 打印的结果是: [{'

我有一个多维dict,我需要返回一个特定的值

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”中


谢谢大家!

你可以这样做。您正在将您的
dict
追加到
列表
,因此必须在
列表
中选择
dict
所在的正确索引。在这种情况下,列表或索引中的第一个元素
0

ConsomRatio["DAP_Local"][0]["Ammonia"]
顺便说一句,根据您试图实现的目标,您可能需要查看多维dicts不同实现的其他答案。

由于
print(conomratio[“DAP_Local”])
返回长度为1的数组,您需要选择索引0,然后按上述方式键入“amino”值


如果
print(ConsomRatio[“DAP_Local”])
返回了一个dict,那么就不需要
[0]
print(ConsomRatio[“DAP_Local”]['Amomonia'])

你为什么要在dict中添加列表呢?你只需要在你的主字典里使用字典

您也可以在没有列表的情况下使用多维dict,例如:

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"])
还要回答您的最新问题(在您的第二条评论中):

我希望,这会有帮助

它变得更好:

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))

其他答案当然是正确的,但你是否考虑过使用“口述的口述”?i、 e:


你能更准确地解释一下你想要什么吗?你为什么要把列表放在dict里面呢?事实上,我想用多维dict,但没法理解语法,所以回去用dict里面的列表。多维dict在我的例子中更有效。dict确实相当有效——至少在你的例子中是这样。有了你这样简单的需求,列表就可以使用,而且比它们更有效。我只使用了一些数据来确保我的问题是清楚的。事实上,我有大量的数据,这就是为什么我认为dicts会更有效率。别担心:尽管我有评论,dicts在Python中确实很有效,你可以用它们处理大量的数据,至少当你不尝试处理整个数据库(多个GBs的数据)时是如此。我猜,这是一个学生的项目?谢谢你的回答,我不知道我必须使用索引。是的,我认为多维dict更适合我的情况!非常感谢。其实这就是我要找的!如果我需要使用打印返回的值呢?意思是打印一个句子,上面写着“为了生产DAP_Local,我们需要0.229的氨”@imanedergal:我添加了一个简短的代码片段,演示了如何实现这一点。它真的做到了!多谢各位@伊曼内德加尔:我对上一个例子做了一点修改。因为这是为了实习,你的代码应该是坚如磐石,当然。使用dicts的get方法,当一个键不存在时(或者在本例中,当一个成分未使用时),您将获得一个默认值。感谢您的解释!
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))
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