Python入坑笔记(四):字典
Python中的字典和Java中的集合很类似,字典保存的是一系列键值对(key-value),每个键与一个值关联。字典可存储的容量几乎不受限制,且可将任何Python对象作为字典的值。
简单使用
字典用{ } 包裹,键与值用:分隔,键值对之间用逗号,分隔,如下:
user = {"name" : "Tom", "age" : 20}
访问字典内容
获取与键对应的值,将键放入字典名后的[ ]中:
alien_0 = {"color":"green", "points":5}
print(alien_0["color"])
outputs:
green
修改和添加内容
指定字典名和方括号括起来的键,然后赋值。如果键在字典中已存在,那它对应的值就会被修改;如果键不存在,则新的键值对就会存入字典中:
alien_0 = {"color":"green", "points":5}
#修改color对应的值
alien_0["color"] = "red"
#添加新的键和值
alien_0["name"] = "Tom"
print(alien_0)
outputs:
{'color': 'red', 'points': 5, 'name': 'Tom'}
删除内容
使用del,然后指定字典名和方括号中的键:
alien_0 = {"color":"green", "points":5}
#删除points和它对应的值
del alien_0["points"]
print(alien_0)
outputs:
{'color': 'green'}
Have a try
Question
词汇表 : Python字典可用于模拟现实生活中的字典, 但为避免混淆, 我们将后者称为词汇表。
想出你在前面学过的5个编程词汇, 将它们用作词汇表中的键, 并将它们的含义作为值存储在词汇表中。
以整洁的方式打印每个词汇及其含义。 为此, 你可以先打印词汇, 在它后面加上一个冒号, 再打印词汇的含义; 也可在一行打印词汇, 再使用换行符(\n ) 插入一个空行, 然后在下一行以缩进的方式打印词汇的含义。
Answer
word_dict = {
"OOP" : "面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构",
"Polymorphism" : "在面向对象语言中,接口的多种不同的实现方式即为多态",
"Regular Expression" : "正则表达式,又称规则表达式",
"binary tree" : "二叉树",
"zero-shot learning" : "一次学习"
}
choose = input("请输入你要查询的内容:")
result = word_dict[choose]
print(choose+":"+result)
outputs:
请输入你要查询的内容:OOP
OOP:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构
遍历字典
遍历所有的键值对
可以使用字典的items()方法获取字典中所有的键值对:
user = {
"name" : "Tom",
"age" : 20,
"height" : 170,
"weight" : 60
}
print(user.items())
#转换为list再输出
print(list(user.items()))
outputs:
dict_items([('name', 'Tom'), ('age', 20), ('height', 170), ('weight', 60)])
[('name', 'Tom'), ('age', 20), ('height', 170), ('weight', 60)]
然后可以用for循环,依次获取字典中的键和值:
user = {
"name" : "Tom",
"age" : 20,
"height" : 170,
"weight" : 60
}
for key,value in user.items():
print(key+":"+str(value))
outputs:
name:Tom
age:20
height:170
weight:60
遍历所有的键
可以用字典的keys()方法获取字典中所有的键,然后用for循环遍历:
user = {
"name" : "Tom",
"age" : 20,
"height" : 170,
"weight" : 60
}
for info in user.keys():
print(info)
outputs:
name
age
height
weight
默认获取到的键的顺序都是不可预测的。如果获取特定顺序的键,可以用sorted()函数来获得按特定顺序排列的键列表的副本:
users = {
"Tom" : "America",
"Edward" : "Canada",
"JackieChan" : "China",
"Brank" : "British",
}
sorted_names = sorted(users.keys())
print(sorted_names)
outputs:
['Brank', 'Edward', 'JackieChan', 'Tom']
遍历所有的值
如果想获取字典中所有的值,可以用字典的values()方法,获取一个仅包含值的列表。使用set集合还可以剔除其中的重复项,因为集合中的元素都是唯一的。
users = {
"Tom" : "America",
"Edward" : "Canada",
"JackieChan" : "China",
"Brank" : "British",
"David" : "British",
}
countries = list(users.values())
print(countries)
#使用set集合剔除重复项
countries_2 = set(users.values())
print(countries_2)
outputs:
['America', 'Canada', 'China', 'British', 'British']
{'British', 'America', 'Canada', 'China'}
嵌套
字典和列表、字典和字典间可以嵌套保存,如下:
字典存放在列表中
#字典列表 #创建一个存储外星人的空列表 aliens = [] #创建30个绿色的外星人 for alien_number in range(30): new_alien = {"color":"green", "points":5, "speed":"slow"} aliens.append(new_alien) #显示前三个外星人 for alien in aliens[:3]: print(alien) print("Total number of aliens: "+str(len(aliens)))outputs:
{'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} {'color': 'green', 'points': 5, 'speed': 'slow'} Total number of aliens: 30字典中存储列表
#字典中存储列表 favorite_languages = { "jen" : ["python", "ruby"], "sarah" : ["c"], "edward" : ["ruby", "go"] } for name, languages in favorite_languages.items(): print(name.title()+"'s favorite languages are:") for language in languages: print("\t"+language.title())outputs:
Jen's favorite languages are: Python Ruby Sarah's favorite languages are: C Edward's favorite languages are: Ruby Go字典中存储字典
#字典中存储字典 users = { 'aeinstein' : { 'first' : 'albert', 'last' : 'aeinstein', 'location' : 'princeton' }, 'mcurie' : { 'first' : 'marie', 'last' : 'curie', 'location' : 'paris' } } for username, user_info in users.items(): print("\nUsername: "+username) print(user_info['first'].title()+" "+user_info['last'].title()+" lived in "+user_info['location'])outputs:
Username: aeinstein Albert Aeinstein lived in princeton Username: mcurie Marie Curie lived in paris