字典类型内置方法

字典类型内置方法

1.定义:{}内用逗号分隔开多个元素,每一个元素都是key:value的形式,value可以是任意数据类型,而key通常应该是字符串类型,但是key必须为不可变类型。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键一般是唯一的,如果重复,最后的一个键值对会替换前面的,值不需要唯一。

dict = {'a': 1, 'b': 2, 'b': '3'}   #如果字典中存在多个键值,最后一个键值会取代前面的,值不需要唯一
print(f"dict:{dict}")

dict:{'a': 1, 'b': '3'}

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

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   

2.用途:当列表存很多值得时候,列表会显得很乱,所以有了字典,但每一个值都有一个key与之对应,key对值有描述功能。多用于存的值表示的是不同的状态时,例如存的值有姓名、年龄、身高、体重、爱好。

3.常用操作+内置方法:常用操作和内置方法分为优先掌握(今天必须得记住)、需要掌握(一周内记住)两个部分。

  1. 按key存取值:可存可取
  2. 长度len
  3. 成员运算in和not in
  4. 删除del
  5. 键keys()、值values()、键值对items()
  6. 循环

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

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
print(f"dic['a']:{dic['a']}")    # 取出指定keys键对应的值
dic['a']=9                       #存储键对应的值
print(f"dic:{dic}")

dic['a']:1
dic:{'a': 9, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

2.长度len

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
print(f"dic_length:{len(dic)}")
print(f"dic_length:{len(dic)}")

dic_length:5
dic_length:5

3.成员运算in 和not in

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
print(f"'f'not in dic:{'f' not in dic}")   #比较的是key
print(f"'f' in dic:{'f' in dic}")          #比较的是key

'f'not in dic:True
'f' in dic:False

4.删除

del pop popitem

dic之del删除

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
del dic['c']            #删除指定keys对应的value
print(f"dic:{dic}")
del dic['a']            #删除指定keys对应的value
print(f"dic:{dic}")
del dic['e']            #删除指定keys对应的value
print(f"dic;{dic}")

dic:{'a': 1, 'b': 2, 'd': 4, 'e': 5}
dic:{'b': 2, 'd': 4, 'e': 5}
dic;{'b': 2, 'd': 4}

dic之pop删除

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
dic.pop('c')               #只能对选定键值进行删除
print(f"dic:{dic}")
print(f"dic.get('c'):{dic.get('c')}")


dic:{'a': 1, 'b': 2, 'd': 4, 'e': 5}
dic.get('c'):None

dic之删除popitem()

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
print(f"dic.popitem():{dic.popitem()}")  #随机删除一个键值对,无法指定

dic.popitem():('e', 5)

5.键keys()、值values()、键值对items()

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
print(f"dic.keys():{dic.keys()}")        #输出所有的keys值
print(f"dic.values():{dic.values()}")    #输出所有的values
print(f"dic.items():{dic.items()}")      #输出所有的键值对

dic.keys():dict_keys(['a', 'b', 'c', 'd', 'e'])
dic.values():dict_values([1, 2, 3, 4, 5])
dic.items():dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)])

6.循环(for)

dic之循环,dic是无序的,但是python3采用了底层优化算法,所以看起来是有序的,但是python2中的字典是无序

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}# dic之循环
for k,v in dic.items(): # items可以换成keys()、values()
    print(k,v)
    
a 1
b 2
c 3
d 4
e 5

1.get(得到)(获取指定keys对应的value值)

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
print(dic.get('a'))      #获取选定的value值
print(dic.get('g'))      #如果键不存在,返回None,不会报错;
print(dic.get('f',100))  #如果键不存在,可以给定默认值

1
None
100

2.update(更新)

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
dic2={'e':15,'g':5,'h':4}
dic.update(dic2)      #把字典2中的元素更新到原字典中,与原字典有相同keys,就更新value值,没有的则进行添加
print(dic)

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 15, 'g': 5, 'h': 4}

3.fromkeys(生成一个字典)

dic = dict.fromkeys(['name', 'age', 'sex'], None)   #新建一个字典 (*),默认把给定列表内的元素取出来当成key,然后使用一个默认value新建一个字典 (*)
print(f"dic: {dic}")

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

4.setdefault(设置默认)

dic之setdefault(),有指定keys,则keys对应值不变;如果没有,则增加

dic = {'a': 1, 'b': 2,'c':3,'d':4,'e':5}
print(f"dic.setdefault('a'):{dic.setdefault('a',3)}")  #如果字典中有该key的话,则key对应的值不变;
print(f"dic:{dic}")
print(f"dic.setdefault('g'):{dic.setdefault('g',10)}") #如果字典中没有该keys值,则增加
print(f"dic.setdefault('h'):{dic.setdefault('h')}")    #如果字典中没有该keys值,则增加
print(f"dic:{dic}")


dic.setdefault('a'):1
dic:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
dic.setdefault('g'):10
dic.setdefault('h'):None
dic:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'g': 10, 'h': None}

5.split(分裂)

语法:str.split(str="", num=string.count(str)).

  • str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
  • num -- 分割次数。默认为 -1, 即分隔所有。
s='hello tank tank say hello sb sb'
x='hello#tank#tank#say#hello#sb#sb'

l=s.split()
print(l)
y=x.split("#",1)
print(y)


['hello', 'tank', 'tank', 'say', 'hello', 'sb', 'sb']
['hello', 'tank#tank#say#hello#sb#sb']

统计s='hello tank tank say hello sb sb'中每个单词的个数

s='hello tank tank say hello sb sb'
s1=s.split()
dic = {}
for i in s1:
    if i in dic:
        dic[i] +=1
    else:
        dic[i] = 1
print(dic)

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

4、存一个值or多个值:多个值,值可以是多个类型,key必须是不可变类型,通常是不可变数据类型的字符串类型

5、有序or无序:无序,(无索引,不能按照索引取值,按照keys值,进行取值)

6、可变与不可变:可变数据类型(变量值发生改变,id内存地址不变)

dic = {'a': 1, 'b': 2}
print(id(dic))
dic['a'] = 5
print(id(dic))

posted @ 2019-05-27 07:56  最后的别离  阅读(314)  评论(0)    收藏  举报