Python數據類型詳解——字典

Python數據類型詳解——字典

引子python

已經學習了列表,如今有個需求——把公司每一個員工的姓名、年齡、職務、工資存到列表裏,你怎麼存?web

staff_list = [
    ["Kwan",21,"CEO",1000000],
    ["小明",22,"人力",5000],
    ["LL",21,"財務",7000],
    # [xxx,xx,xx,xxx]
    # [xxx,xx,xx,xxx]
    # [xxx,xx,xx,xxx]  
]

以上面的形式存,沒問題。不過你要查某一我的的工資的話,就得遍歷這個列表了。學習

for i in staff_list:
    if i[0] == '小明':        # 查詢小明的信息
        print(i)
        break

但假如公司有20000人,若是你要查詢的這我的正好在列表的最後一個,那就意味着這個for循環得20000人所有走一遍,才能找到。列表越大,查找速度就會越慢。code

此時,就須要用到Python語言中惟一得映射類型——字典(dict)。blog

1、定義

定義語法{key1:value1, key2:value2} (以鍵值對得形式定義,用{}括起來)get

一、鍵(key)與值(value)之間用冒號:隔開。hash

二、鍵值對與鍵值對之間用,隔開。it

示例:for循環

info = {
    'name':'Kwan',
    'age':'21',
    'blog_site':'https://cnblogs.com/Kwan-C/'
}

特性:class

  • key-value(鍵值對)結構
  • key必須爲不可變數據類型、必須惟一
  • 可存聽任意多個value、可修改、能夠不惟一
  • 字典是無序的
  • 查詢速度塊,且不受字典大小的影響(至於爲何塊?學到hash時就懂了)

2、建立方法

# 第一種(最經常使用)
info = {'name':'Kwan', 'age':21}

# 第二種
info = dict(name='Kwan', age=21)

# 第三種
info = dict({'name':'Kwan', 'age':21})

# 第四種
s = {}.fromkeys(['name', 'age'],1)    # 這種定義的結果爲{'name': 1, 'age': 1}

3、增長操做

info = {
    'Kwan':[21, 'CEO', 1000000],
    '小明':[22, '人力', 5000],
}

# 新增LL   直接添加
info['LL'] = [21, '財務', 7000]
# 或者使用setdefault
info.setdefault('LL', [21, '財務', 7000])

4、刪除操做

info = {
    'Kwan':[21, 'CEO', 1000000],
    '小明':[22, '人力', 5000],
}

info.pop('Kwan')  # 用pop()方法,刪除指定的key
info.popitem()    # 用popitem()方法,隨機刪除一個key
del info['小明']  # 用del,刪除指定的key
info.clear()      # 用clear()方法,清空該字典

5、修改操做

info = {
    'Kwan':[21, 'CEO', 1000000],
    '小明':[22, '人力', 5000],
}

info['Kwan'][1] = 'boss'    # 直接找到指定元素從新賦值便可
info['KK'] = '新來的'      # 'KK'這個鍵(key)不存在於info中,此時就是添加操做了

info2 = {
    'PP':[24, '銷售', 6000],
    'UU':[23, '宣傳', 5000],
}

info.update(info2)      # 將字典info2的鍵值對添加到字典info中

6、查操做

info = {
    'Kwan':[21, 'CEO', 1000000],
    '小明':[22, '人力', 5000],
}


a = info['Kwan']    # 返回字典中key爲'Kwan'對應的值,若key不存在,則報錯
b = info.get('小明', default = None)   # 返回地點中key爲'小明'對應的值,若key不存在,則返回default的值(default默認值爲None)
if 'Kwan' in info:      # 用in方法,判斷key是否在字典中,存在則返回True,不然爲False
    print(info['Kwan'])
c = info.keys()     # 返回一個包含字典全部key的列表
d = info.values()   # 返回一個包含字典全部value的列表
e = info.items()    # 返回一個包含全部(key, value)元組的列表

7、循環

info = {
    "name":"Kwan",
    "ahe":21,
    "website": "https://cnblogs.com/Kwan-C/"
}

# 第一種
for k in info.keys():    # 遍歷字典全部的key
    print(k, info[k])
    
# 第二種
for k, v in info.items():   # 遍歷字典全部的鍵值對
    print(k, v)

# 第三種
for k in info:      # 同第一種
    print(k, info[k])

8、求取字典的長度

info = {
    "name":"Kwan",
    "ahe":21,
    "website": "https://cnblogs.com/Kwan-C/"
}

print(len(info))     # 結果爲字典中key的數量,info中key的數量爲3
相關文章
相關標籤/搜索