python - Dictionary Inception - 如何打印示例
问题描述
试图访问字典里面的键值,里面,字典,里面的字典。这应该打印:“在法国巴黎,您访问了 Resturaunt 1、5 次。” 我怎样才能解决这个问题?
travel_log = {
"France": {
"cities_visited": {
"Paris": {
"resturaunt": "Resturaunt 1",
"total_visits": 5,
},
"Lille": {
"resturaunt": "Resturaunt 2",
"total_visits": 2,
},
"Dijon": {
"resturaunt": "Resturaunt 3",
"total_visits": 3,
}
},
},
}
#Example Should print:
# In Paris, France you visited Resturaunt 1, 5 times.
for country in travel_log:
for city in travel_log[country]: # for Paris in France in Travel_log
print(f"In {travel_log[country][city]}, {travel_log[country]} you visted {travel_log[country][city][resturaunt]}, {travel_log[country][city][total_visits]} times.")
解决方案
在您的代码中更改以下内容:
从:
for city in travel_log[country]: # This will give you ["cities_visited"]
至:
for city in travel_log[country]["cities_visited"]: # This will give you ["Paris", "Lille", Dijon]
您缺少
cities_visited
字典键。流程应该是:- travel_log -> 国家 -> city_visited -> 城市 -> 餐厅
- travel_log -> 国家 -> city_visited -> 城市 -> total_visits
从:
print(f"In {travel_log[country][city]}, {travel_log[country]} you visited {travel_log[country][city][restaurant]}, {travel_log[country][city][total_visits]} times.")
至:
print(f"In {city}, {country} you visited {travel_log[country]['cities_visited'][city]['restaurant']}, {travel_log[country]['cities_visited'][city]['total_visits']} times.")
- 如果您只想要国家或城市名称,请不要访问
travel_log[country]
nortravel_log[country]['cities_visited'][city]
,这些语句转换为访问 和 的值,travel_log['France']
它们travel_log['France']['cities_visited']['Paris']
都会为您提供它们的字典值,例如{"restaurant": "Restaurant 1", "total_visits": 5}
,但不是 country"France"
和 city的实际字符串值"Paris"
。实际上,您想要的值已经在变量country
和city
. - 当您尝试时
travel_log[country][city]['cities_visited'][restaurant]
,您基本上是在使用 name 访问一个不存在的变量restaurant
,而实际上,它是键的字符串名称,因此必须用引号引起来,'restaurant'
因此正确的形式是travel_log[country][city]['cities_visited']['restaurant']
.
- 如果您只想要国家或城市名称,请不要访问
完整代码:
for country in travel_log:
for city in travel_log[country]["cities_visited"]: # for Paris in France in Travel_log
print(f"In {city}, {country} you visted {travel_log[country]['cities_visited'][city]['restaurant']}, {travel_log[country]['cities_visited'][city]['total_visits']} times.")
输出:
In Paris, France you visted Restaurant 1, 5 times.
In Lille, France you visted Restaurant 2, 2 times.
In Dijon, France you visted Restaurant 3, 3 times.
推荐阅读
- typescript - 如何处理泛型中的函数重载
- linkedin - 是否可以通过 API 搜索帐户并根据其公司网站获取关注者?
- python - 在 Numpy 中删除空行的精明方法
- unity3d - 在实例化对象的脚本中获取 Prefab - Unity 2D
- java - 使用 squareup.wire 在 proto 中获取 nestedTypes 的原始模式
- sql-server - 触发器适用于 UPDATE/INSERT,但在通过 BCP 运行时失败(日期格式问题)
- javascript - 将鼠标光标悬停在左列的滚动条上时保存右列的内容
- perl - ld:无法识别的选项'-Wl,-O1'
- amazon-web-services - AWS QuickSight:将视觉对象连接到多个数据集
- python - 使用类时出现 NameError