我有一个多维度字典,我需要返回一个特定值。
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'}]
我的问题是:有没有办法归还" Ammonia"只有,在" DAP_Local" ?
谢谢!
答案 0 :(得分:7)
你可以这样做。您将dict
追加到list
,因此您必须在list
所在的dict
中选择正确的索引。在这种情况下,列表或索引0
中的第一个元素。
ConsomRatio["DAP_Local"][0]["Ammonia"]
顺便说一下,根据你想要实现的目标,你可能想看看多维决策的不同实现的其他答案。
答案 1 :(得分:4)
其他答案当然是正确的,但您是否考虑使用“dicts dict”?即:
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
答案 2 :(得分:3)
因为print(ConsomRatio["DAP_Local"])
返回一个长度为1的数组,你需要选择索引0,然后按照上面的'Ammonia'值键。
如果print(ConsomRatio["DAP_Local"])
返回了字典,则无需让[0]
和print(ConsomRatio["DAP_Local"]['Amomonia'])
工作
答案 3 :(得分:2)
无论如何,你为什么把名单列入你的词典?你可以在你的主要词典中使用dicts。
你也可以在没有列表的情况下使用多维词典,例如:
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))