python-7-求问,打印嵌套字典中的信息时,出现重复怎么解决?

​​​​​​学习内容:

《python编程:从入门到实践》

知识点:字典、键值对、嵌套

#练习6-11:城市 
创建一个名为cities的字典,将三个城市名用作键。
对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、
人口约数以及一个有关该城市的事实。在表示每座城市的字典中,
应包含country、population和fact等键。将每座城市的名字以及有关信息都打印出来。

PS:看我的问题请大佬们直接跳到问题部分,前面是笔记而已,感谢。

目录

​​​​​​学习内容:

《python编程:从入门到实践》

我的代码:

结果如下:

总结&问题:

我的问题是怎么去除3遍的结果,我尝试了很多了

我的代码:
cities = {
    'beijing':{
        'country':'China',
        'population':'2.2trillion',
        'fact':'中国首都,历史悠久,文化灿烂,世界文化遗产丰富'
        },
    'paris':{
        'country':'Fracnce',
        'population':'1.2trillion',
        'fact':'法国首都,四大世界级城市之一'
        },
    'Akureyri':{
        'country':'Iceland',
        'population':'fifteen thousand',
        'fact':'"北方之都",位于冰岛最北部埃亚峡湾尽头,地处北极圈边缘',
        },
    }
for city,summary in cities.items():
    print(f"\n{city}")
    for key,value in summary.items():
        print(f"{city}属于{summary['country']}")
        print(f"面积是{summary['population']}")
        print(f"这里是{summary['fact']}")
结果如下:

另一种代码写法:

主要是把要用到的值,用变量赋值 变量=的方式,赋值后打印

赋值的方法似乎更清晰。

for city,summary in cities.items():
    print(f"\n城市概述:{city}")
    for key,value in summary.items():
        country = summary['country']
        population = summary['population']
        fact = summary['fact']
        print(f"属于:{country}")
        print(f"人口是:{population}")
        print(f"定位是:{fact}")

结果如下:

总结&问题:

  • 以下是我在写代码中遗忘和出错的部分:
  • for city,summary in cities.items():
        print(f"\n{city}")
        for key,value in summary.items():
            print(cities[city])
            print(cities.get(city)) 
            print(city)
            print(f"{city}属于{value}")
    
    

    结果是:

    • print(f"\n{city}")打印出的是第一行beijing

    • print(cities[city]) 打印出的是第二行,print(cities.get(city)) 打印出的是第三行,这两个结果是一样的,如最后一个红框。

      • 这里的问题是提取了值,但没有单独每个信息进行区分,有很多字符是不需要的代码,这个是嵌套比较难的地方,容易错,但好在把beijing、paris、akureyri都打出来了;

      • 下一步就是再把这个里面的提取出来,也就是用summary['country']、summary['population']、summary['fact']或者用赋值+summary['fact']取值法

      • 这里出现{}是因为值是一个字典,自己会带{},和有的时候报错出现{}的处理方法是不一样的。

    • print(f"{city}属于{value}")打印出来是遍历三个值了,但是,属于不是符合每一个,所以需要改变。

      • 最后改成如下

        for city,summary in cities.items():
            print(f"\n{city}")
            for key,value in summary.items():
                print(f"{city}属于{summary['country']}")
                print(f"人口是{summary['population']}")
                print(f"这里是{summary['fact']}")
        
        

        

  • 两周不碰代码就不会了,很多规则会记不清,要重新摸索
  • 这个案例里面,键值对的结构一样,和键值对分别代表不同信息的获取方式不一样,嵌套中就是用这样的方式,
  • 第一个字典所有键值对都是——城市:城市信息,
  • 第二个字典的键值对是不同维度的信息——城市、人口、简介

我的问题是怎么去除3遍的结果,我尝试了很多了

cities = {
    'beijing':{
        'country':'China',
        'population':'2.2trillion',
        'fact':'中国首都,历史悠久,文化灿烂,世界文化遗产丰富'
        },
    'paris':{
        'country':'Fracnce',
        'population':'1.2trillion',
        'fact':'法国首都,四大世界级城市之一'
        },
    'Akureyri':{
        'country':'Iceland',
        'population':'fifteen thousand',
        'fact':'"北方之都",位于冰岛最北部埃亚峡湾尽头,地处北极圈边缘',
        },
    }
for city,summary in cities.items():
    print(f"\n{city}")
    for key in set(summary.keys()):
        print(f"属于{summary['country']}")

结果是: 

  1. 这个代码中,我去掉了最后一行print()里面的{city}减少一个变量,减少了一个影响因素;
  2. for key in set(summary.keys()): 这一部分,把items的影响去除了,改成了keys(),实际这个也是循环的作用,按理说结果是取值,应该是只有一个france,为了避免这种情况,我还加了set()也没有用,所以不知道怎么处理了。不知道大佬们会怎么处理?感谢。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值