python - 计算嵌套字典
问题描述
我越来越清楚,显然我不知道自己在做什么:(只是随便咬了一口,超出了我的咀嚼能力。
我想要得到的结果是:
People bought 9 of sirni.
Shop stock increased 10 of pizza.
我也有未解决的参考 burek_name 错误,但我想在突破计算后将其作为次要挑战来解决。作为第三个挑战,我知道我必须将数字转换为绝对值而不是 +-。当我被卡住时,请帮助我通过计算将我推向正确的方向!
感谢您花时间阅读!
burek_dict_0 = {"bureks": {
"1": {
"burek_name": "sirni",
"burek_price": 1.8,
"burek_available": 10
},
"2": {
"burek_name": "mesni",
"burek_price": 2,
"burek_available": 10
},
"3": {
"burek_name": "pizza",
"burek_price": 1.9,
"burek_available": 10
}
}}
burek_dict_1 = {"bureks": {
"1": {
"burek_name": "sirni",
"burek_price": 1.8,
"burek_available": 1
},
"2": {
"burek_name": "mesni",
"burek_price": 2,
"burek_available": 10
},
"3": {
"burek_name": "pizza",
"burek_price": 1.9,
"burek_available": 20
}
}}
def get_burek_avail():
global burek_dict_0
global burek_dict_1
burek_available_0 = ""
burek_available_1 = ""
while True:
for bureks, key in burek_dict_0.items():
for key, burek_available in bureks.items():
burek_available_0 = key['burek_available']
for bureks, key in burek_dict_1.items():
for key, burek_available in bureks.items():
burek_available_1 = key['burek_available']
if burek_available_0 - burek_available_1 > 0:
sold = burek_available_0 - burek_available_1
print(f"People bought {sold} of {burek_name}. ")
if burek_available_0 - burek_available_1 < 0:
sold = burek_available_0 - burek_available_1
print(f"Shop stock increased {sold} of {burek_name}. ")
解决方案
你在寻找这样的东西吗?
burek_dict_0 = {"bureks": {
"1": {
"burek_name": "sirni",
"burek_price": 1.8,
"burek_available": 10
},
"2": {
"burek_name": "mesni",
"burek_price": 2,
"burek_available": 10
},
"3": {
"burek_name": "pizza",
"burek_price": 1.9,
"burek_available": 10
}
}}
burek_dict_1 = {"bureks": {
"1": {
"burek_name": "sirni",
"burek_price": 1.8,
"burek_available": 1
},
"2": {
"burek_name": "mesni",
"burek_price": 2,
"burek_available": 10
},
"3": {
"burek_name": "pizza",
"burek_price": 1.9,
"burek_available": 20
}
}}
def get_burek_avail():
burek_available_0 = 0
burek_available_1 = 0
bureks_0 = burek_dict_0['bureks'].values()
bureks_1 = burek_dict_1['bureks'].values()
for init, end in zip(bureks_0, bureks_1):
burek_available_0 = init['burek_available']
burek_available_1 = end['burek_available']
burek_name = init['burek_name']
if burek_available_0 > burek_available_1:
sold = burek_available_0 - burek_available_1
print(f"People bought {sold} of {burek_name}. ")
if burek_available_0 < burek_available_1:
sold = burek_available_1 - burek_available_0
print(f"Shop stock increased {sold} of {burek_name}. ")
我曾经zip()
将两个字典的值配对在一起。
这是输出:
>>> get_burek_avail()
People bought 9 of sirni.
Shop stock increased 10 of pizza.
推荐阅读
- excel - 如何在 vba 代码中添加或减去从访问中读取的值?
- node.js - 通过 wifi 与设备通信
- swift - 为什么为 UITableViewDiffableDataSource cellProvider 参数返回 nil tableViewCell?
- c# - 固定行数后,将数据表行拆分为两列
- laravel - 从 laravel 项目创建 docker 映像时作曲家的问题
- functional-programming - 为什么这些 ormap 和 for/or 函数会出错?
- reactjs - 在 Typescript 中递归地将 props 映射到 React 子代
- arrays - 使用 Int 对数组进行排序
- excel - 使用宏关闭并重新打开工作簿后出现“无法运行宏”错误
- c++ - 我的 type_trait 在模板化/非模板化代码中的不同行为