字典
知識點:
- 字典是由鍵-值對組成的。
- 可以通過鍵找到與之對應的值。
- 值可以是python中的任意可以創(chuàng)建的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. 循環(huán)查詢字典中的鍵值對
要使用for循環(huán),則必須要有一個列表喉祭, .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. 循環(huán)查詢字典中的鍵
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循環(huán)中直接使用字典名
輸入:
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. 循環(huán)查詢字典中的值
使用.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()
函數(shù)暫時改變列表順序胶惰。
輸入:
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()
函數(shù)是對字符進行排序傻工,而值往往不止字符型一種,所以常常用來對鍵排序孵滞。
10.消除重復的元素
使用set()
函數(shù)中捆,生成一個沒有重復元素的列表。
下面例子的字典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=[] #創(chuàng)建一個空列表
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的總數(shù)量
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