仅用 600 行代码,小白也能精通 Python 字典

# 一 简单的字典
# alien.py

alien_0 = {'color':'green','points':5}

print(alien_0['color'])
print(alien_0['points'])

# 二 使用字典

alien_0 = {'color': 'green'}

# 01 访问字典中的值 -- 访问
# alien.py

alien_0 = {'color': 'green'}
print(alien_0['color'])

alien_0 = {'color':'green','points':5}
new_points = alien_0['points']
print(f"You just earned {new_points} points!")

# 02 添加键值对 -- 修改-添加
# alien.py

alien_0 = {'color': 'green'}
print(alien_0)

alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)

# 03 先创建空字典
# alien.py

alien_0 = {}
alien_0['color'] = 'green'
alien_0['points'] = 5

print(alien_0)

# 04 修改字典中的值 -- 修改键
# alien.py

alien_0 = {'color': 'green'}
print(f"The alien is {alien_0['color']}.")

alien_0['color'] = 'yellow'
print(f"The alien is now {alien_0['color']}.")

alien_0 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
print(f"Original x_position: {alien_0['x_position']}")

# 向右移动外星人
# 根据当前速度决定外星人向右移动多远

if alien_0['speed'] == 'slow':
	x_increment = 1
elif alien_0['speed'] == 'medium':
	x_increment = 2
else:
	x_increment = 3

alien_0['x_position'] += x_increment
print(f"New x_position: {alien_0['x_position']}")

# 05 删除键值对
# alien.py

alien_0 = {'color': 'green', 'points': 5}
print(alien_0)

del alien_0['points']	# 删除列表也用 del 关键字
print(alien_0)

# 06 由类似对象组成的字典

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'raby',
	'phil': 'python',
}

language = favorite_languages['sarah'].title()
print(f"Sarah's favorite language is {language}.")

# 使用 get() 访问值 -- IMPORTANT
# alien_no_points.py

try:	# 使用 键 访问出错
	alien_1 = {'color': 'green', 'speed': 'slow'}
	print(alien_1['points'])
except Exception as e:
	print(f"error: {e}")

alien_0 = {'color': 'green', 'speed': 'slow'}

# 使用 get() 访问不存在键可以附带默认值,未指定为 None

point_value = alien_0.get('points', 'No point value assigned')
print(point_value)

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

person = {
	'first_name': 'chan',
	'last_name': 'ero',
	'age': 18,
	'city': 'JiNing'
}

for k,v in person.items():
	print(f"{k}: {v}")

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

favorite_numbers = {
	"March 7th": 7,
    "Herta": 3,
    "Bronya": 5,
    "Seele": 8,
    "Clara": 6,
    "Yukong": 9,
    "Pela": 2,
    "Luocha": 4,
    "Sampo": 1,
    "Himeko": 0
}

for k,v in favorite_numbers.items():
	print(f"Name: {k}   \tFavoriteNumber: {v}")

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

words = {
	'indent': 'python语法的一部分',
	'int  ': '整型变量',
	'float': "浮点型变量",
	'class': "声明 类 关键字",
	'struct': '声明 结构体 关键字'
}

for k, v in words.items():
	print(f"{k}\t: {v}")

# 三 遍历字典
# 01 遍历所有键值对

user_0 = {
	'username': 'efermi',
	'first': 'enrico',
	'last': 'fermi'
}

# user.py
# user_0 = ...

for key, value in user_0.items():
	print(f"\nKey: {key}")
	print(f"Value: {value}")

# favorite_languages.py

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'raby',
	'phil': 'python',
}

for name, language in favorite_languages.items():
	print(f"{name.title()}'s favorite language is {language.title()}.")

# 02 遍历字典中的所有键

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'raby',
	'phil': 'python',
}

for name in favorite_languages.keys():
	print(name.title())

# -

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'raby',
	'phil': 'python',
}

friends = ['phil', 'sarah']
for name in favorite_languages.keys():
	print(f"Hi, {name.title()}")

	if name in friends:
		language = favorite_languages[name].title()
		print(f"\t{name.title()}, I see you love {language}.")

if 'erin' not in favorite_languages.keys():
	print("Erin, please take out poll!")

# 03 按指定顺序遍历字典中的所有键

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'raby',
	'phil': 'python',
}

for name in sorted(favorite_languages.keys()):
	print(f"{name.title()}, thank you for taking the poll.")

# 04 遍历字典中的所有值

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'raby',
	'phil': 'python',
}

print("The following languages have been mentioned:")
for language in favorite_languages.values():
	print(language.title())

# - 剔除 重复项目

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'raby',
	'phil': 'python',
	'edward': 'raby',
	'phil': 'python',
}

print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
	print(language.title())

# - 使用花括号创建 集合(不重复的列表) -- 也可以用 set() 函数

languages = {'python', 'ruby', 'python', 'c'}
print(languages)

# 作业
# 04 词汇表2.py
'''
现在你知道了如何遍历字典,可以整理为完成练习6-3而编写的代码,将其中的一系列函数调用
print()替换为一个遍历字典中键和值的循环。确定该循环正确无误后,再在词汇表中添加5个
Python术语。当你再次运行这个程序时,这些新术语及其含义将自动包含在输出中。
'''

words['c    '] = '一种编译型的高级编程语言'
words['c++  '] = 'c语言加强版,支持范类、面向对象'
words['python'] = '一种灵活的解释型高级编程语言'
words['java'] = '很受欢迎的后端语言'
words['html'] = '超文本标记语言'

for k, v in words.items():
	print(f"{k}\t: {v}")

# 05 河流.py
'''
创建一个字典,在其中存储三条重要河流及其流经的国家。例如,一个键值对可能是'nile':
'egypt'。使用循环为每条河流打印一条消息,下面是一个例子。The Nile runs through 
Egypt.使用循环将该字典中每条河流的名字打印出来。使用循环将该字典包含的每个国家的名字
打印出来。
'''

rivers = {
    "Nile": "Egypt",
    "Amazon": "Brazil",
    "Yangtze": "China"
}

for country, river in rivers.items():
	print(f"The {country.title()} runs through {river.title()}")

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

favorite_languages = {
	'jen': 'python',
	'sarah': 'c',
	'edward': 'raby',
	'phil': 'python',
}

accepts = {
	'jen',
	'sarah'
}

for k in sorted(favorite_languages.keys()):
	print(f"Hi, {k}.")
	if k in accepts:
		print(f"\tThank for accept.")
	else:
		print(f"\tI am looking forward to you accept it.")

# 四 嵌套
# 01 字典列表
# aliens.py

alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}

aliens = [alien_0, alien_1, alien_2]

for alien in aliens:
	print(alien)

# - 使用 range() 生成 30个 alien

# 创建用于储存外星人的空列表
aliens = []

# 创建 30 个绿色的外星人
for alien_number in range(30):
	new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
	aliens.append(new_alien)

# 显示前 5 个外星人
for alien in aliens[:5]:
	print(alien)
print("...")

# 显示创建了多少个外星人
print(f"Total number of aliens: {len(aliens)}")

# - 修改前三个外星人

# 创建用于储存外星人的空列表
aliens = []

# 创建 30 个绿色的外星人
for alien_number in range(30):
	new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
	aliens.append(new_alien)

# 修改前 3 个外星人
for alien in aliens[0:3]:
	if alien['color'] == 'green':
		alien['color'] = 'yellow'
		alien['speed'] = 'medium'
		alien['points'] = 10
	elif alien['color'] == 'yellow':
		alien['color'] = 'red'
		alien['speed'] = 'fast'
		alien['points'] = 15

# 显示前 5 个外星人
for alien in aliens[:5]:
	print(alien)
print("...")

# 显示创建了多少个外星人
print(f"Total number of aliens: {len(aliens)}")

# 02 在字典中储存列表
# pizza.py

pizza = {
	'crust': 'thick',
	'toppings': ['mushrooms', 'extra cheese']
}

print(
	f"You ordered a {pizza['crust']}-crust pizza "
	f"with the following toppings:"
	)

for topping in pizza['toppings']:
	print(f"\t{topping}")

# favorite_languages.py
favorite_languages = {
	'jen': ['python', 'ruby'],
	'sarah': ['c'],
	'edward': ['raby', 'go'],
	'phil': ['python', 'haskell'],
}

for name, languages in favorite_languages.items():
	print(f"\n{name.title()}'s favorite language are:")
	for language in languages:
		print(f"\t{language.title()}")

# 03 在字典中储存字典
# many_users.py

users = {
	'aeinstein': {
	'first': 'albert',
	'last': 'einstein',
	'location': 'princeton',
	},
	'mcurie': {
	'first': 'marie',
	'last': 'curie',
	'location': 'paris',
	}
}

for username, user_info in users.items():
	print(f"\nUsername: {username}")
	fullname = f"{user_info['first']} {user_info['last']}"
	location = user_info['location']

	print(f"\tFull name: {fullname}")
	print(f"\tLocation: {location}")

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

person0 = {
	'first_name': 'chan',
	'last_name': 'ero',
	'age': 18,
	'city': 'JiNing'
}
person1 = {
	'first_name': 'fire',
	'last_name': 'fly',
	'age': 18,
	'city': 'XingHe'
}
person2 = {
	'first_name': 'march',
	'last_name': '7th',
	'age': 18,
	'city': 'XingQiong'
}

people = [person0, person1, person2]

for p in people:
	fullname = f"{p['first_name'].title()} {p['last_name'].title()}"
	age = p['age']
	city = p['city']

	print(f"Fullname: {fullname}")
	print(f"\tAge: {age}")
	print(f"\tCity: {city}")

# 07 宠物
'''
创建多个表示宠物的字典,每个字典都包含宠物的类型及其主人的名字。将这些字典存储在一个名
为pets的列表中,再遍历该列表,并将有关每个宠物的所有信息都打印出来。
'''

pet01 = {
	'name': "Kawaii",
	'typer': 'dog',
	'owner': '@erochan'
}
pet02 = {
	'name': "Sakura",
	'typer': 'cat',
	'owner': '@erochan'
}
pet03 = {
	'name': "Wanchan",
	'typer': 'dog',
	'owner': '@erochan'
}

pets = [pet01, pet02, pet03]

for pet in pets:
	name = pet['name']
	typer = pet['typer']
	owner = pet['owner']

	print(f"\nNickName: {name}")
	print(f"\tRace: {typer}")
	print(f"\tOwner: {owner}")
	


# 07 喜欢的地方
'''
创建一个名为favorite_places的字典。在这个字典中,将三个人的名字用作键,并存储每个人
喜欢的1~3个地方。为了让这个练习更有趣些,可以让一些朋友说出他们喜欢的几个地方。遍历这
个字典,并将其中每个人的名字及其喜欢的地方打印出来。
'''

favorite_places = {
    "Herta": ["Belobog", "The Space Station"],
    "Seele": ["Underworld", "Cocolia Orphanage"],
    "Bronya": ["Jarilo-VI", "St. Freya Academy"]
}

for name, places in favorite_places.items():
	print(f"\nHi, {name.title()}.")
	print("Here are your favorite places: ")

	for place in places:
		print(f"\t{place}")


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

favorite_numbers = {
    "March 7th": [7, 17, 27],
    "Herta    ": [3, 13, 33],
    "Bronya   ": [5, 15, 25],
    "Seele    ": [8, 18, 28],
    "Clara    ": [6, 16, 26],
    "Yukong   ": [9, 19, 29],
    "Pela     ": [2, 12, 22],
    "Luocha   ": [4, 14, 24],
    "Sampo    ": [1, 11, 21],
    "Himeko   ": [0, 10, 20]
}

for k,v in favorite_numbers.items():
	print(f"Name: {k} Favorite Numbers:", end=' ')

	for number in v:
		print(f"{number}", end=' ')

	print()


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

cities = {
    "Belobog": {
        "country": "Randomland",
        "population": 500000,
        "fact": "This city has beautiful gardens."
    },
    "Herta Space Station": {
        "country": "Wonderworld",
        "population": 100000,
        "fact": "It's a high-tech station in space."
    },
    "Jingliu": {
        "country": "Dreamland",
        "population": 800000,
        "fact": "The architecture here is unique."
    }
}

for city_name, city_info in cities.items():
	name = city_name
	country = city_info['country']
	population = city_info['population']
	fact = city_info['fact']

	print(f"\nCity: {name}")
	print(f"\tCountry   : {country}")
	print(f"\tPopulation: {population}")
	print(f"\tFact      : {fact}")
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值