Python中字典(Dict)的相关知识:
1.基础:python中dict是一系列键-值(key-value)对,可以使用key来访问相关联的value。
与key相关联的value可以是数字、字符串、列表乃至字典。事实上,可以使用python
中的任何一个对象作为字典中的值。
dict_test = {'First_name': 'Alex', 'Last_name': 'Shaw','Age': 27}
print(dict_test)
print(dict_test['Last_name'])
print(dict_test['Age'])
#访问dict中的int类型的值,但在print时必须进行转型
age_test = dict_test['Age']
print("This man is " + str(age_test) + " years old.\n")
Output:{'First_name': 'Alex', 'Last_name': 'Shaw', 'Age': 27}
Shaw
27
This man is 27 years old.
#添加key-value对
dict_test['School'] = 'Harbin'
dict_test['Number'] = 77
print(dict_test)
Output:{'First_name': 'Alex', 'Last_name': 'Shaw', 'Age': 27,
'School': 'Harbin', 'Number': 77}
#Python中key-value的排列顺序与添加顺序不一定相同。Python不关心key-value对的
#添加顺序,只关心key和value之间的关联关系
#使用字典来存储用户提供的数据或在编写能自动生成大量key-value对的代码时,通常都
#需要先定义一个空字典。
example_empty_dict = {}
#修改dict中的值,可一次指定dict名、用方括号括起的key以及与该key相关联的新value。
dict_test['Age'] = 26
print(dict_test)
Output:{'First_name': 'Alex', 'Last_name': 'Shaw', 'Age': 26,
'School': 'Harbin', 'Number': 77}
#删除key-value,删除的key-value值永久消失
del dict_test['Number']
2.遍历字典
dict_test = {
'First_name': 'Alex',
'Last_name': 'Shaw',
'Age': '27',
}
for key,value in dict_test.items():
#items()返回一个key-value对列表,for循环每次将一个key-value对存储到指定的变量
print("\nKey: " + key + " " +
"Value: " + value)
#在遍历字典是,key-value对的返回顺序与存储顺序不一定相同,python值只关心key-value
#之间的关联关系
(1).遍历字典中的所有键
keys():以列表形式返回字典中所有的键
for items in dict_test.keys(): #返回的是一个列表
print(items.title())
#遍历字典时会默认遍历所有的键,所以上面的代码可以写成如下形式
#但第一种方式可读性更高:
for items in dict_test:
print(items.title())
(2).按顺序遍历字典中的所有键
sorted(dict_test):获得按特定顺序排列的key列表的副本
for items in sorted(dict_test.keys()):
print(items.title())
(3).遍历字典中所有的值
values():返回一个值列表
for items in dict_test.values(): #返回的是一个列表
print(items.title())
3.集合set:
类似于列表,但没有重复元素.通过对包含重复元素的列表调用 set()方法可以找出
列表中独一无二的元素,并使用这些元素来创建一个集合。
dict_test = {
'First_name': 'Alex',
'Last_name': 'Shaw',
'Age': '27',
'Age': '27',
}
for items in set(dict_test.keys()):
print(items.title())
4.嵌套:
(1).字典列表:
dict_test1 = {'First_name': 'Alex', 'Last_name': 'Shaw','Age': 27}
dict_test2 = {'First_name': 'Poison', 'Last_name': 'Ash','Age': 7}
list_people = [dict_test1,dict_test2]
for person_info in list_people :
print(person_info)
#自动生成列表中的字典元素
list_people = []
for person_info in range(30):
new_people = {'First_name': 'Alex', 'Last_name': 'Shaw','Age': 27}
list_people.append(new_people)
for person_info in list_people[:5]:
print(person_info)
(2).在字典中存储列表:
#每当需要在字典中将一个key关联到多个value时,都可以在字典中嵌套一个列表
student = {
'FirstName':['Alex'],
'LastName':['Shaw'],
'Score':['97','99','88'], #以列表形式存储,外层是字典
'Like':['movie','skate','sing','coding'],
}
#print("The " + student['FirstName'] + "'s score is : \n")
for keys,values in student.items():
print("The item is : " + keys.title() + '\n')
for value in values:
print('\t' + value)
#列表和字典的嵌套层级不应太多,如果出现比上面的实例还多的嵌套,应该考虑
#寻找其他解决方案
(3).在字典中存储字典:
student = {
'Alex':{
'FirstName':'Alex',
'LastName':'Shaw',
'Score':'97',
'Like':'skate',
},
'Poison':{
'FirstName':'Poison',
'LastName':'Polaris',
'Score':'77',
'Like':'dancing',
'Else':'Nothing'
},
}
'''
定义一个字典,其中包含两个key:'Alex' and 'Poison';与每个key相关联的
value都是一个字典。此处嵌套的两个字典结构大致相同,python中没有要求字典结构
必须相同,但结构相同更方便for进行处理
'''
for username,user_info in student.items():
#打印字典中的所有信息
print("\nUsername: " + username)
print("\nUserinfor: " + str(user_info))
#打印字典中的部分信息
full_name = user_info['FirstName'] + user_info['LastName']
score = user_info['Score']
print("\tFull name: " + full_name)
print("\tScore: " + score)
Output:
Username: Alex
Userinfor: {'FirstName': 'Alex', 'LastName': 'Shaw', 'Score': '97',
'Like': 'skate'}
Full name: AlexShaw
Score: 97
Username: Poison
Userinfor: {'FirstName': 'Poison', 'LastName': 'Polaris', 'Score': '77',
'Like': 'dancing', 'Else': 'Nothing'}
Full name: PoisonPolaris
Score: 77