Python--(字典)

字典是另一種可變容器模型,且可存儲任意類型對象.

一、字典的創建

字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中,

格式如下所示:

dict={key1:value1,key2:value2}

鍵必須是唯一的,但值則不必.不允許同一個鍵出現兩次創建時如果同一個鍵被賦值兩次,後一個值會被記住並且覆蓋上一個值

值可以取任何數據類型,但鍵必須是不可變得如字符串/數字/元組.而列表則不行

二、字典的增刪改查

<1>增;

d['不在d裏的鍵']=值

 
stus={'張三':16,'李四':19}
dit={'愛好':['吃','燙頭']}

stus['小明']=20
stus['小明']=25#覆蓋上一個值20將不顯示
print(stus)

執行命令得

 
{'張三': 16, '李四': 19, '小明': 25}

<2>刪:

del d['刪除的鍵']如果不存在就拋異常

pop('刪除的鍵[,default]')  default:默認值 如果刪除鍵存在則返回鍵值否則返回默認值

 
stus={'張三':16,'李四':19}
del stus['張三']#如果無'張三'得鍵則會拋異常
print(stus)
ret=stus.pop('小明1','無此key')#[,default]當刪除的key不存在返回的值系統不拋異常
print(ret)

執行命令得

 
{'李四': 19}
無此key

<3>改:

d['需要修改的鍵']=值 如果此鍵不存在就變成了增加此鍵

 
stus={'張三':16,'李四':19}
stus['張三']=20
print(stus)

執行命令得

 
{'張三': 20, '李四': 19}

<4>查:

d.get('鍵','默認值') 需要查詢的鍵不存在則返回默認值不拋異常

 
stus={'張三':16,'李四':19}
print('小明年齡',stus.get('小明',不存在))
print('小明年齡',stus.get('小明1',不存在))
print('張三年齡'.stus['張三'])#黨茶渠key不存在時拋異常不建議使用

執行命令得

小明年齡 20
小明1年齡 不存在
張三年齡 16

三、字典的遍歷

len(d)元素個數

d.keys()獲取字典的鍵

values()獲取字典的鍵值

items()得到每個鍵值對得元組 item[0]代表鍵 items[1]代表鍵值

 
dict={'張三':18,'李四':20}
print(len(dict))
for key in dict.keys():
    print(key)
for value in dict.values():
    print(value)
for item in dict.items():
    print(item[0],item[1])

執行命令得

 
2
張三
李四
18
20
張三 18
李四 20

練習

(電話通訊錄)  創建2個列表 一個存姓名 一個存手機
=======通訊錄管理系統=======
1.增加姓名和手機
2.刪除姓名
3.修改手機
4.查詢所有用戶
5.根據姓名查找手機號
6.退出

============================

 
phones={'123':'張三','456':'李四'}
while True:
    print('=======通訊錄管理系統=======')  
  print('1.增加姓名和手機')  
  print('2.刪除姓名')  
  print('3.修改手機')  
  print('4.查詢所有用戶')  
  print('5.根據姓名查找手機號')  
  print('6.退出')  
  print('============================')  
  num=int(input('請輸入數字:'))  
    num=int(input('請輸入數字:'))
    if num==1:
         name=input('請輸入新姓名:')
         phone=input('請輸入新電話:')
         while phone in phones.keys():
             phone=input('電話已存在 請重新輸入:')
         phones[phone]=name
         print('錄入成功')
    elif num==2:
        name = input('請輸入姓名:')
        for temp in phones.items():
            if temp[1].__eq__(name):
                phones.pop(temp[0])
                print('刪除成功')
                break#當兩個名字相同手機號不同時,刪除一個加break 如果都刪除則不加
            else:
                print('無此用戶')
    elif num==3:
        phone = input('請輸入電話:')
        if phone in phones.keys():
            new_phone=input('請輸入新的電話:')
            while new_phone in phones.keys():
                new_phone=input('電話已存在 請重新輸入新的電話:')
            name=phones.pop(phone)
            phones[new_phone]=name
            print('修改成功')
        else:
            print('無此電話')
    elif num==4:
        for temp in phones.items():
            print('姓名:'+temp[1],'電話:'+temp[0])
    elif num==5:
        name = input('請輸入姓名:')
        for temp in phones.items():
            if temp[1].__eq__(name):
                print('姓名:'+temp[1],'電話'+temp[0])
    elif num==6:
        print('謝謝使用')
        break

四、字典的特性

1.不允許同一個鍵出現兩次,創建時如果同一個鍵被賦值兩次,後一個值被記住

2.鍵必須不可變,所以可以用數字/字符串/元祖充當,而不能用列表

和list比較,dict有以下幾個特點:

查找和插入的速度幾塊,不會隨着key得增加而變慢

需要佔用大量的內存,內存浪費多.

hashcode 算法

而list是相反:

查找和插入的時間隨着元素的增加而增加

佔用空間小,浪費內存很少


字典是可以無限嵌套的

 
citys={
    '北京':{
        '朝陽':['三里屯','國貿'],
        '海淀':['中關村','公主墳'],
        '豐臺':['角門西','天台']
        },
    '河北':{
        '廊坊':['大城縣','霸州'],
        '石家莊':['橋西區','橋東區'],
    }
}
for city in citys.keys():
    print(city)
    for town in citys.get(city).keys():
        print('\t'+town)
        print('\t\t'+str(citys.get(city).get(town)))

執行命令得

 
北京
	朝陽
		['三里屯', '國貿']
	海淀
		['中關村', '公主墳']
	豐臺
		['角門西', '天台']
河北
	廊坊
		['大城縣', '霸州']
	石家莊
		['橋西區', '橋東區']

五、字典中的內置函數

序號函數及描述
1

dict.clear()

刪除字典的所有元素 

2

dict.copy()

複製一個字典內容 3

dict.fromkeys()

創建一個新的字典,以序列seq中元素做字典的鍵,val爲字典所有鍵對應的初始值 

4

dict.get(key.default=None)

返回指定鍵的值,如果值不在字典中返回default值 

5

key indict 

如果建在字典dict例返回true否則返回false

6

dict.items()

以列表返回可遍歷的(鍵 .值)元祖數組 

7

dict.keys

 以列表返回一個字典所有的鍵

8

dict.setdefaulet(key.default=None)

和get() 類似 但如果鍵不存在於字典中,將會添加鍵和值設爲default 

9

dict.update(dict2)

把字典dict2的鍵/值對更新到dict裏 

10

dict.values()

以列表返回字典中的所有值

11

pop(key[.default]) 

刪除字典給定健key所對應的值,返回值爲被刪除的值,key值必須給出.否則fanhuidefault

12

popitem()

隨機返回並刪除字典中的一對鍵和值(一般刪除末尾對) 不建議使用 




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章