字典
知识点:
- 字典是由键-值对组成的。
- 可以通过键找到与之对应的值。
- 值可以是python中的任意可以创建的object。
- 通过‘:’冒号来连接键值对,通过‘,’逗号来间隔开不同的键值对。用大括号来包含所有的键值对。
- 字典里面的键值对没有顺序。
1. 通过键访问值
输入:
alien_0={'color': 'blue' , 'point': 5}
print("the alien_0's color is " + alien_0['color'])
输出:
c:\py>dictionary
the alien_0's color is blue
2. 添加键值对
直接通过: 字典名[键]=值 来添加
输入:
alien_0={'color': 'blue' , 'point': 5}
print(alien_0)
alien_0['x_position']=0 #字典名[键]=值
alien_0['y_position']=25
print(alien_0)
输出:
c:\py>dictionary
{'color': 'blue', 'point': 5}
{'color': 'blue', 'point': 5, 'x_position': 0, 'y_position': 25}
3. 从空字典开始
和上面添加键值对的方法一样
输入:
alien_0={ }
alien_0['color']='blue'
alien_0['point']=5
print(alien_0)
输出:
c:\py>empty_dic
{'color': 'blue', 'point': 5}
4. 改变字典中键值对的值
输入:
alien_0={ }
alien_0['color']='blue'
alien_0['point']=5
print(alien_0)
alien_0['color']='green'
alien_0['point']=2
print(alien_0)
输出:
c:\py>empty_dic
{'color': 'blue', 'point': 5}
{'color': 'green', 'point': 2}
5. 使用del语句删除键值对
输入:
alien_0={ }
alien_0['color']='blue'
alien_0['point']=5
alien_0['x_position']=0
alien_0['y_position']=25
print(alien_0)
del alien_0['x_position'] #删除键值对'x_position':0
del alien_0['y_position'] #删除键值对'y_position':25
print(alien_0)
输出:
c:\py>empty_dic
{'color': 'blue', 'point': 5, 'x_position': 0, 'y_position': 25}
{'color': 'blue', 'point': 5}
6. 循环查询字典中的键值对
要使用for循环,则必须要有一个列表, .items()
方法返回一个元素为键值对的列表。
输入:
alien_0={
'color': 'blue',
'point': 5,
'x_position': 0,
'y_position': 25,#最后一个键值对也带上逗号
}
for key,value in alien_0.items(): #使用.items()方法
print('\nkey: '+str(key)) #空一行
print('value: '+str(value))
输出:
c:\py>empty_dic
key: color
value: blue
key: point
value: 5
key: x_position
value: 0
key: y_position
value: 25
7. 循环查询字典中的键
1. 使用.keys()
方法
.keys()
方法返回一个包含所有键的列表
输入:
alien_0={
'point': 5,
'y_position': 25,
'x_position': 0,
'color': 'blue', #最后一个键值对也带上逗号
}
for key in alien_0.keys(): #使用.items()方法
print('key: '+str(key))
输出:
c:\py>empty_dic
key: point
key: y_position
key: x_position
key: color
2. 在for循环中直接使用字典名
输入:
alien_0={
'point': 5,
'y_position': 25,
'x_position': 0,
'color': 'blue', #最后一个键值对也带上逗号
}
for key in alien_0: #直接使用字典名
print('key: '+str(key))
输出:
c:\py>empty_dic
key: point
key: y_position
key: x_position
key: color
使用.items()
方法会让代码可读性更高。
8. 循环查询字典中的值
使用.values()
方法
.values()
方法返回一个包含所有键的列表
输入:
alien_0={
'point': 5,
'y_position': 25,
'x_position': 0,
'color': 'blue', #最后一个键值对也带上逗号
}
for value in alien_0.values(): #使用.values()方法
print('value: '+str(value))
输出:
c:\py>empty_dic
value: 5
value: 25
value: 0
value: blue
9.按字母表顺序输出
由于字典中的键值对并没有顺序,所以无论是查看所有键或是查看所有值,都没有固定的顺序。
使用sorted()
函数暂时改变列表顺序。
输入:
alien_0={
'point': 5,
'y_position': 25,
'x_position': 0,
'color': 'blue', #最后一个键值对也带上逗号
}
for key in sorted(alien_0.keys()): #使用.keys()方法
print('key: '+str(key))
输出:
c:\py>empty_dic
key: color
key: point
key: x_position
key: y_position
注意: sorted()
函数是对字符进行排序,而值往往不止字符型一种,所以常常用来对键排序。
10.消除重复的元素
使用set()
函数,生成一个没有重复元素的列表。
下面例子的字典point和y_position键所对应的值重复。
输入:
alien_0={
'point': 5,
'y_position': 5, #这儿和point键对应的值重复
'x_position': 0,
'color': 'blue', #最后一个键值对也带上逗号
}
print('no duplicate values: ')
for value in set(alien_0.values()): #使用.values()方法
print(str(value))
输出:
c:\py>empty_dic
no duplicate values:
0
5
blue
11.嵌套
11.1 在列表中嵌套字典
输入:
aliens=[] #创建一个空列表
for alien_number in range(30):
new_alien={'color': 'blue' , 'point': 5}
aliens.append(new_alien)
for alien in aliens[:5]: #展示前5个元素
print (alien)
print('...')
#输出列表中alien的总数量
print('total number of aliens : '+str(len(aliens)))
输出:
c:\py>nest
{'color': 'blue', 'point': 5}
{'color': 'blue', 'point': 5}
{'color': 'blue', 'point': 5}
{'color': 'blue', 'point': 5}
{'color': 'blue', 'point': 5}
...
total number of aliens : 30
11.2 在字典中嵌套列表
输入:
favorite_languages={
'jen' : ['python','ruby'],
'sarah' : ['c'],
'jimmy' : ['ruby','go'],
}
for name,languages in favorite_languages.items():
print('\n'+name.title()+"'s favorite language are ")
for language in languages:
print('\t'+language)
输出:
c:\py>list_nest_dic
Jen's favorite language are
python
ruby
Sarah's favorite language are
c
Jimmy's favorite language are
ruby
go
11.3 在字典中嵌套字典
输入:
users={
'aeinstein':{
'first' : 'albert',
'last' : 'einstein',
'location' : 'princeton',
},#注意,字典嵌套字典,键值对之间要有逗号
'mcurie':{
'first' : 'marie',
'last' : 'curie',
'location' : 'pairs',
},#注意,字典嵌套字典,键值对之间要有逗号
}
for user_name,user_info in users.items():
print('\nUsername: '+user_name)
full_name=user_info['first'] + ' '+user_info['last']
location=user_info['location']
print('\tFull name: '+full_name.title())
print('\tLocation: '+location.title())
输出:
c:\py>dic_nest_dic
Username: aeinstein
Full name: Albert Einstein
Location: Princeton
Username: mcurie
Full name: Marie Curie
Location: Pairs