Python编程:从入门到实践——字典(第六章+课后答案)

对应书目:Python编程:从入门到实践

字典(第六章)

要理解新的编程概念,最佳的方法是尝试在程序中使用它们

  1. 在 Python 中,字典是一系列键—值对。
  2. 在 Python 中,字典用放在花括号 {} 中的一系列键—值对表示
  3. del 字典名[键]

动手试一试

6-1 人:使用一个字典来存储一个熟人的信息,包括名、姓、年龄和居住的城市。该字典应包含键 first_name、 last_name、 age 和 city。将存储在该字典中的每项信息都打印出来

people = {
    'first_name':'aa',
    'last_name':'bb',
    'age':18,
    'city':'beijing'
    }
print(people['first_name'].title()+people['last_name']+" age:"+str(people['age'])+" from:"+people['city'])

6-2 喜欢的数字:使用一个字典来存储一些人喜欢的数字。请想出 5 个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的一个数字,并将这些数字作为值存储在字典中。打印每个人的名字和喜欢的数字。为让这个程序更有趣,通过询问朋友确保数据是真实的

favorite = {'a':'3','b':'5','c':'9','d':'27','e':'78'}
print("a's favorite number is " + favorite['a'])
print("b's favorite number is " + favorite['b'])
print("c's favorite number is " + favorite['c'])
print("d's favorite number is " + favorite['d'])
print("e's favorite number is " + favorite['e'])

6-3 词汇表: Python 字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表
 想出你在前面学过的 5 个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中
 以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符( \n)插入一个空行,然后在下一行以缩进的方式打印词汇的含义

words = {'programming':'Chinese abbreviation for programming',
            'python':'Is an interpretive, object - oriented, dynamic data - type high - level programming language',
            }
print("programming is " + words['programming'])
print("python is " + words['python'])
  1. .items(),它返回一个键值—对列表
  2. 注意,即便遍历字典时,键—值对的返回顺序也与存储顺序不同。 Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系
  3. 在不需要使用字典中的值时,方法 .keys() 很有用,返回一个列表,列表包含字典中所有的键,如果不写 .keys(),其结果和有 .keys() 一样,因为遍历字典时,会默认遍历所有的键
  4. 对字典排序 sorted(字典.keys())
  5. .value() 提取字典中所有的值,但没有考虑是否重复,为剔除重复项,可以使用 set(字典.values())

动手试一试

6-4 词汇表 2:既然你知道了如何遍历字典,现在请整理你为完成练习 6-3 而编写的代码,将其中的一系列 print 语句替换为一个遍历字典中的键和值的循环。确定该循环正确无误后,再在词汇表中添加 5 个 Python 术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中

words = {'programming':'Chinese abbreviation for programming',
            'python':'Is an interpretive, object - oriented, dynamic data - type high - level programming language',
            }
for key,value in words.items():
    print(key + " is " + value)

6-5 河流:创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键—值对可能是'nile': 'egypt'
 使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”
 使用循环将该字典中每条河流的名字都打印出来
 使用循环将该字典包含的每个国家的名字都打印出来

rivers = {'Yellow River' : 'China',
            'nile' : 'egypt',
            'Yangtze river' : 'China'
            }
for key,value in rivers.items():
    print("The "+ key + " runs though " + value)

6-6 调查:在 6.3.1 节编写的程序 favorite_languages.py 中执行以下操作
 创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中
 遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查

favorite_languages = {'jen':'python',
          'sarsh':'c',
          'edward':'ruby',
          'phil':'python'}
for name,language in favorite_languages.items():
    print(name.title() + "is favorite_language is " + language.title() + ".")
if 'tom' not in favorite_languages.keys():
    print("where are you! " + "tom".title())

动手试一试

6-7 人:在为完成练习 6-1 而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为 people 的列表中。遍历这个列表,将其中每个人的所有信息都打印出来

people = {
    'people1' : {
        'first_name':'aa',
        'last_name':'bb',
        'age':18,
        'city':'beijing'
        },
    'people2' : {
        'first_name': 'cc',
        'last_name': 'dd',
        'age': 78,
        'city': 'shanghai'
        },
    'people3' : {
        'first_name': 'ee',
        'last_name': 'ff',
        'age': 37,
        'city': 'guangzhou'
        },
}
for username,user_info in people.items():
    print("name " + username)
    message = user_info['first_name']+" "+user_info['last_name']+" "+str(user_info['age'])+" "+user_info['city']
    print(message)

6-8 宠物:创建多个字典,对于每个字典,都使用一个宠物的名称来给它命名;在每个字典中,包含宠物的类型及其主人的名字。将这些字典存储在一个名为 pets 的列表中,再遍历该列表,并将宠物的所有信息都打印出来

pets = {
    'tom' : {
        'first_name':'aa',
        'last_name':'bb',
        'age':18,
        'city':'beijing'
        },
    'jerry' : {
        'first_name': 'cc',
        'last_name': 'dd',
        'age': 78,
        'city': 'shanghai'
        },
}
for username,user_infos in pets.items():
    print("name " + username)
    for user_info in user_infos.values():
        print(user_info)

6-9 喜欢的地方:创建一个名为 favorite_places 的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他喜欢的 1~3 个地方。为让这个练习更有趣些,可让一些朋友指出他们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜欢的地方打印出来

favorite_places = {
    'tom' : {
        'city':'beijing',
        'city1':'shanghai'
        },
    'jerry' : {
        'city':'yunnan',
        'city1':'xiamen',
        'city2':'guangxi'
        },
}
for username,user_infos in favorite_places.items():
    print("name " + username)
    for user_info in user_infos.values():
        print(user_info)

6-10 喜欢的数字:修改为完成练习 6-2 而编写的程序,让每个人都可以有多个喜欢的数字,然后将每个人的名字及其喜欢的数字打印出来

favorite_nums = {
    'tom' : {
        'num':'313',
        'num1':'231'
        },
    'jerry' : {
        'num':'44',
        'num1':'2',
        'num2':'324',
        'num3':'890'
        },
}
for username,user_infos in favorite_nums.items():
    print("name " + username)
    for user_info in user_infos.values():
        print(user_info)

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

cities = {
    'shanghai' : {
        'country':'China',
        'population':'78271',
        'fact':'beautiful'
        },
    'xiamen' : {
        'country':'China',
        'population':'7432423',
        'fact':'beautiful!'
        },
}
for username,user_infos in cities.items():
    print("name " + username)
    for user_info in user_infos.values():
        print(user_info)

6-12 扩展:本章的示例足够复杂,可以以很多方式进行扩展了。请对本章的一个示例进行扩展:添加键和值、调整程序要解决的问题或改进输出的格式
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值