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