天天看點

043 字典類型内置方法

目錄

  • 一、字典類型内置方法(dict)
    • 1.1 優先掌握(*****)
    • 1.2 需要掌握(****)
  • 二、練習

1.用途:存多個值,但每一個值都有一個key與之對應,key對值有描述功能。多用于存的值表示的是不同的狀态時,例如存的值有姓名、年齡、身高、體重、愛好。

2.定義:{}内用逗号分隔開多個元素,每一個元素都是key:value的形式,value可以是任意資料類型,而key通常應該是字元串類型,但是key必須為不可變類型。

dic = {'a': 1, 'b': 2}  # dic = dict({'a':1,'b':2})
           

print(f"dic: {dic}")

dic: {'a': 1, 'b': 2}
           
dic = dict(a=1, b=2, c=3)

print(f"dic: {dic}")
           
dic: {'a': 1, 'b': 2, 'c': 3}
           
dic = {1: 'a', 0: 'b'}

print(f"dic[0]: {dic[0]}")  # 無法區分dic是清單,還是字典,并且key不再具有描述資訊
           
dic[0]: b
           
dic = {[1,2]: 'a', 0: 'b'}  # 報錯
           

3.常用操作+内置方法:常用操作和内置方法分為優先掌握(今天必須得記住)、需要掌握(一周内記住)兩個部分。

  1. 按key存取值:可存可取
  2. 長度len
  3. 成員運算in和not in
  4. 删除del
  5. 鍵keys()、值values()、鍵值對items()
  6. 循環

1.按key存取值:可存可取

# dic之按key存取值
dic = {'a': 1, 'b': 2}
           

print(f"first dic['a']: {dic['a']}")

dic['a'] = 3

print(f"second dic['a']: {dic['a']}")

first dic['a']: 1
second dic['a']: 3
           

2.長度len

# dic之長度len
dic = {'a': 1, 'b': 2}
           

print(f"len(dic): {len(dic)}")

len(dic): 2
           

3.成員運算in和not in

# dic之成員運算in和not in
dic = {'a': 1, 'b': 2}
           

print(f"'a' in dic: {'a' in dic}") print(f"1 in dic: {1 in dic}")

'a' in dic: True
1 in dic: False
           

4.删除

# dic之删除del
dic = {'a': 1, 'b': 2}
del dic['a']
           

print(f"dic.get('a'): {dic.get('a')}")

dic.get('a'): None
           
# dic之删除pop()
dic = {'a': 1, 'b': 2}
dic.pop('a')  # 指定元素删除

print(f"dic.pop('b'): {dic.pop('b')}")
print(f"dic.get('a'): {dic.get('a')}")
           
dic.pop('b'): 2
dic.get('a'): None
           
# dic之删除popitem()
dic = {'a': 1, 'b': 2}

print(f"dic.popitem(): {dic.popitem()}")  # popitem() 方法随機傳回并删除字典中的一對鍵和值(一般删除末尾對)。
           
dic.popitem(): ('b', 2)
           

5.鍵keys()、值values()、鍵值對items()

# dic之鍵keys()、值values()、鍵值對items(),python2中取出的是清單(雞蛋);python3中取出的是元組(雞)
dic = {'a': 1, 'b': 2}
           

print(f"dic.keys(): {dic.keys()}") print(f"dic.values(): {dic.values()}") print(f"dic.items(): {dic.items()}")

dic.keys(): dict_keys(['a', 'b'])
dic.values(): dict_values([1, 2])
dic.items(): dict_items([('a', 1), ('b', 2)])
           

6.循環

# dic之循環
# dic是無序的,但是python3采用了底層優化算法,是以看起來是有序的,但是python2中的字典是無序
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
           

for k, v in dic.items(): # items可以換成keys()、values() print(k, v)

a 1
b 2
c 3
d 4
           

  1. get
  2. update
  3. fromkeys
  4. setdefault

1.get()

# dic之get()
dic = {'a': 1, 'b': 2}
           

print(f"dic.get('a'): {dic.get('a')}") print(f"dic.get('c'): {dic.get('c')}")

dic.get('a'): 1
dic.get('c'): None
           

2.update()

# dic之update()
dic1 = {'a': 1, 'b': 2}
dic2 = {'c': 3}
dic1.update(dic2)
           

print(f"dic1: {dic1}")

dic1: {'a': 1, 'b': 2, 'c': 3}
           

3.fromkeys()

# dic之fromkeys()
dic = dict.fromkeys(['name', 'age', 'sex'], None)
           

print(f"dic: {dic}")

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

4.setdefault()

# dic之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}
           

統計

s='hello tank tank say hello sb sb'

中每個單詞的個數

結果如:

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

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}
           
dic = {'a': 1, 'b': 2}
print(f'first:{id(dic)}')
dic['a'] = 3
print(f'second:{id(dic)}')
           
first:4356627632
second:4356627632