首页 > 解决方案 > 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.") 


标签: python

解决方案


在您的代码中更改以下内容:

  1. 从:

    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
  2. 从:

    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]nor travel_log[country]['cities_visited'][city],这些语句转换为访问 和 的值,travel_log['France']它们travel_log['France']['cities_visited']['Paris']都会为您提供它们的字典值,例如 {"restaurant": "Restaurant 1", "total_visits": 5},但不是 country"France"和 city的实际字符串值"Paris"。实际上,您想要的值已经在变量countrycity.
    • 当您尝试时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.

推荐阅读