字典数据类型内置方法

字典数据类型内置方法

一、作用

给值添加描述信息作用

二、定义方式

使用{}一逗号隔开加入键值对key,value,key为不可变类型(int,float,str,tup,bool)且key不可重复

info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
info_dict1 = ({'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140})
print(info_dict)
print(info_dict1)

结果:

{'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}

逻辑思维

先打印

执行完之后(看值的结果)

多在纸上画

三、常用内置方法

主要方法

  1. 按key取值,即可删除也可以改变

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    print(info_dict['name'])
    info_dict['age'] = 19
    print(info_dict)
    

    结果:

    laowang

  2. 长度len()

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    print(len(info_dict))
    

    结果:

    4

  3. in/ not in 是根据key进行比较

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    print('name' in info_dict)
    

    结果:
    True

  4. for循环默认打印key值

    for i in info_dict:
        print(i)
    

    结果:

    name
    age
    height
    weight

  5. keys/values/items/(items用的最多,一般和解压缩一起使用

info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}

print(info_dict.keys())

print(list(info_dict.values()))

print(info_dict.items())
print(list(info_dict.items()))

# 获取key和v
for k, v in info_dict.items():
    print(k, v)

结果:

dict_keys(['name', 'age', 'height', 'weight'])
['laowang', 18, 180, 140]
dict_items([('name', 'laowang'), ('age', 18), ('height', 180), ('weight', 140)])
[('name', 'laowang'), ('age', 18), ('height', 180), ('weight', 140)]

name laowang
age 18
height 180
weight 140

  1. 删除del

    dic = {'a': 1, 'b': 2}
    del dic['a']
    
    print(f"dic.get('a'): {dic.get('a')}")
    

    结果:

    dic.get('a'): None

需要掌握

  1. 复制copy(),id不同

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    print(info_dict.copy())
    

    结果:

  2. 删除pop

info_dict.pop('name') # 根据key删除
print(info_dict)

结果:

{'age': 18, 'height': 180, 'weight': 140}

  1. 删除默认一项

早期的时候字典是无序的,是随机删除的,但是 由于python3底层优化了字典,让字典看得貌似有序, 所以删除最后一个

info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
info_dict.popitem()
print(info_dict)


结果:

{'name': 'laowang', 'age': 18, 'height': 180}

  1. 清除字典

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    
    info_dict.clear()
    print(info_dict)
    

    结果:

    {}

  2. get方法, 如果有,就返回真正的值,如果没有,默认返回none,可以指定返回结果,如果,不存在key,可以设置返回值

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    
    print(info_dict.get('age'))
    print(info_dict.get('hobby'))
    print(info_dict.get('hobby', 'run'))
    

    结果:

    18

    None

    run

  3. 设置默认值 setdefault(),如果key不存在,将其和值添加进去,如果存在,不改变其值

info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}

info_dict.setdefault('hobby', 'run')
print(info_dict)
info_dict.setdefault('age', 34)
print(info_dict)

结果:

{'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140, 'hobby': 'run'}

  1. 添加值update(),有重复key则会被覆盖掉,重新赋值

    info_dict = {'name': 'laowang', 'age': 18, 'height': 180, 'weight': 140}
    
    info_dict.update({'hobby': 'run'})
    print(info_dict)
    

    结果:

  2. fromkeys有字典dict点出来的,快速造一个字典,默认值为None,也可以设置默认值

print(dict.fromkeys([12, 3, 4, 4, 5, 6]))
print(dict.fromkeys([12, 3, 4, 4, 5, 6], 'randy'))

结果:

{12: None, 3: None, 4: None, 5: None, 6: None}

  1. 词频统计
s='hello randy randy say hello  hello hello '

l=s.split()

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

四、存在一个值还是多个值

多个值,值可以是多个类型,key必须是不可变类型,通常应该是不可变类型中的字符串类型

五、有序 or 无序

无序

六、可变 or 不可变

可变数据类型 (可变:值可变id不变并且不可哈希,不可变:值可变,id可变并且可以哈希)

七、总结

7.1 常用操作

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

7.2 常用方法

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

'''
key 哈希处理 纯数字序列 哈希函数 哈希值
'a' --》 12 --》 3
'b' --》 14 --》 5
'c' --》 24 --》 6
'd' --》 21 --》 3
'''

1. 为什么key是可变数据类型

dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

dic['a']

2. 为什么key不能重名

dic = {'a':1, 'a':2} # key不能重名
print(dic['a'])

3. 字典为什么是乱序的

4. 散列表(哈希表)解决了什么问题

'''
1,2,3,4,,,6,,,7,,7,,,7,n n次

'''

'''
1,2,2,2,,2,,,,2,2,2
'''

posted @ 2019-08-05 21:23  RandySun  阅读(160)  评论(0编辑  收藏  举报