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 list
中 dict
所在的正确索引。在本例中,列表或索引中的第一个元素 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
我有一个多维字典,我需要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 list
中 dict
所在的正确索引。在本例中,列表或索引中的第一个元素 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