43-字典類型內置方法

字典類型內置方法

一.字典類型內置方法

1.用途

存多個值,但每個值都有一個key與之對應,key對值有描述功能。多用於存的值表示的是不一樣的狀態時,例如存的值有姓名、年齡、身高、體重、愛好等。算法

2.定義

{}內用逗號隔開多個元素,每一根元素都是以key:value的形式,value能夠是任意數據類型,而key一般應該是字符串類型,可是key必須爲不可變類型。優化

name = {'name1':'lwx','name2':'hanye'}
print(name)

# {'name1': 'lwx', 'name2': 'hanye'}
name = dict(name1 = 'lwx',name2 = 'hanye')
print(f'name:{name}')

# name:{'name1': 'lwx', 'name2': 'hanye'}
name = {'name1': 'lwx', 'name2': 'hanye'}
print(f"name[name1]: {name['name1']}")

#name[name1]: lwx

二.經常使用操做+內置方法

經常使用操做和內置方法分爲優先掌握(今天必須得記住)、須要掌握(一週內記住)兩個部分code

2.1優先掌握

2.1.1 按key存取值:可存可取

# dic之按key存取值
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f"name[name1]:{name['name1']}")

name['time'] = 'forever'
print(name)

# name[name1]:lwx
# {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever'}

2.1.2 長度len

#dic之長度len
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f'len(name):{len(name)}')

# len(name):3

2.1.3 成員運算in和not in

# dic之成員運算in和not in
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f"'name1' in name:{'name1' in name}")
print(f"'lwx' in name:{'lwx' in name}")

# 'name1' in name:True
# 'lwx' in name:False

2.1.4 刪除del

# dic之刪除del
name = {'name1':'lwx','name2':'hanye','time':'all'}
del name['time']
print(name)
print(name.get('time'))

# {'name1': 'lwx', 'name2': 'hanye'}
# None     或得不到,返回None
# dic之刪除pop
name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'}
name.pop('time')        # 指定元素刪除
print(f"name.pop('haha'):{name.pop('haha')}")    #打印刪除的key對應的值       
print(f"name.get('time'):{name.get('time')}")

# name.pop('haha'):lala
# name.get('time'):None
# dic之刪除popitem()
# popitem() 方法隨機返回並刪除字典中的一對鍵和值(通常刪除末尾對)。
name = {'name1':'lwx','name2':'hanye','time':'all','haha':'lala'}
print(f"name.popitem():{name.popitem()}")

# name.popitem():('haha', 'lala')

2.1.5 鍵keys()、值values()、鍵值對items()

# dic之鍵keys()、值values()、鍵值對items()的輸出
name = {'name1':'lwx','name2':'hanye','time':'all'}
print(f"name.keys:{name.keys()}")
print(f"name.values():{name.values()}")
print(f"name.items():{name.items()}")

# name.keys:dict_keys(['name1', 'name2', 'time'])
# name.values():dict_values(['lwx', 'hanye', 'all'])
# name.items():dict_items([('name1', 'lwx'), ('name2', 'hanye'), ('time', 'all')])

2.1.6 循環

# dic之循環
# dic是無序的,可是python3採用了底層優化算法,因此看起來是有序的,可是python2中的字典是無序
name = {'name1':'lwx','name2':'hanye','time':'forever'}

for k,v in name.items():
    print(f'{k: <7} {v}')

# name1   lwx
# name2   hanye
# time    forever

2.2 須要掌握

2.2.1 get()

# dic之get()
name = {'name1':'lwx','name2':'hanye','time':'forever'}

print(f"name.get('name1'):{name.get('name1')}")
print(f"naem.get('hiahiahia'):{name.get('hiahiahia')}")

# name.get('name1'):lwx
# naem.get('hiahiahia'):None

2.2.2 update()

# dic之update()
name = {'name1':'lwx','name2':'hanye','time':'forever'}
name2= {'deep':'in heart'}
name.update(name2)
print(name)

# {'name1': 'lwx', 'name2': 'hanye', 'time': 'forever', 'deep': 'in heart'}

2.2.3 fromkeys()

dic = dict.fromkeys(['name','age','sex'],None)
print(f'dic:{dic}')

# dic:{'name': None, 'age': None, 'sex': None}

2.2.4 setdefault()

# 有指定key不會改變值;無指定key則改變值
dic = {'a': 1, 'b': 2}

print(f"dic.setdefault('a'): {dic.setdefault('a',3)}")
print(f"dic: {dic}")
print(f"dic.setdefault('c'): {dic.setdefault('c',3)}")
print(f"dic: {dic}")

# dic.setdefault('a'): 1
# dic: {'a': 1, 'b': 2}
# dic.setdefault('c'): 3
# dic: {'a': 1, 'b': 2, 'c': 3}

三.練習

1.統計單詞的個數

統計s='hello tank tank say hello sb sb'中每一個單詞的個數字符串

結果如:{'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}get

s='hello tank tank say hello sb sb'

l = s.split()

dic ={}
for item in l:
    if item in dic:
        dic[item]+=1
    else:
        dic[item]=1
print(dic)

# {'hello': 2, 'tank': 2, 'say': 1, 'sb': 2}

2.存一個值仍是多個值

多個值,值能夠使多個數據類型,key必須是不可變數據類型,一般是不可變數據類型中的字符串it

3.有序或無序

無序class

4.可變或不可變

dic = {'a': 1, 'b': 2}
print(f'first:{id(dic)}')
dic['a'] = 3
print(f'second:{id(dic)}')

# first:50821088
# second:50821088
相關文章
相關標籤/搜索