Python-数据类型之字典

一: 概述

  • 字典是有大括号,逗号分隔,有k/v组成
  • 字典的键必须hashable,如数字,字符串,布尔值,元组

二: 操作

2.1 增

2.1.1  直接赋值

  • 如果键不存在,则增加
dic = {'name': 'wangys','age': 18}
dic['sex'] = 'male'
print(dic)
# {'name': 'wangys', 'age': 18, 'sex': 'male'}
  • 如果键存在,则修改
dic = {'name': 'wangys','age': 18}
dic['name'] = 'wc'
print(dic)

# {'name': 'wc', 'age': 18}

2.1.2 sedefault

  • 如果键不存在,则增加
dic = {'name': 'wangys','age': 18}
dic.setdefault('sex','male')
print(dic)
# {'name': 'wangys', 'age': 18, 'sex': 'male'}
  • 如果键存在,不过做更改
dic = {'name': 'wangys','age': 18}
dic.setdefault('name','wc')
print(dic)
# {'name': 'wangys', 'age': 18}

2.2 删

2.2.1 pop

  • 如果键存在,则删除这个k/v
  • 返回值为删除键的value值
dic = {'name': 'wangys','age': 18}
ret = dic.pop('age')
print(ret)
print(dic)

# 18
# {'name': 'wangys'}
  • 如果键不存在,则报错 KeyError
dic = {'name': 'wangys','age': 18}
ret = dic.pop('male')
print(ret)
print(dic)
# KeyError: 'male'

2.2.2 del

  • 键如果存在,则删除
  • 如果不存在,则包错 KeyError
dic = {'name': 'wangys','age': 18}
del dic['name']
print(dic)
del dic['male']
print(dic)

# {'age': 18}
# KeyError: 'male'

2.2.3 clear

dic = {'name': 'wangys','age': 18}
dic.clear()
print(dic)
#{}

2.2.4 popitem

  • 随机删除一个元素
  • 返回值为kv组成的元祖
dic = {'name': 'wangys','age': 18}
print(dic.popitem())
print(dic)

# ('age', 18)
# {'name': 'wangys'}

2.3 改

2.3.1  直接修改

dic = {'name': 'wangys','age': 18}
dic['name'] = 'wc'
print(dic)
# {'name': 'wc', 'age': 18}

2.3.2 update

  • 两个字典合并
  • 如果键冲突,则更新,如果不冲突则增加
dic1 = {'name': 'wangys','age': 18}
dic2 = {'name': 'wc','sex': 'male'}
dic1.update(dic2)
print(dic1)
# {'name': 'wc', 'age': 18, 'sex': 'male'}

2.4 查

2.4.1 直接查

  • 如果键不存在,则报错,KeyError
dic1 = {'name': 'wangys','age': 18}
print(dic1['name'])
# wangys
dic1 = {'name': 'wangys','age': 18}
print(dic1['male'])
# KeyError: 'male'

2.4.2 get

  • 如果不存在,则返回None,也可以指定返回值
dic1 = {'name': 'wangys','age': 18}
ret1 = dic1.get('name')
ret2 = dic1.get('male')
ret3 = dic1.get('male','改键不存在')
print(ret1,ret2,ret3)
# wangys None 改键不存在

三: 其他操作

3.1 for 循环

  • 得到的是key
dic1 = {'name': 'wangys','age': 18}
for item in dic1:
    print(item)
# name
# age

3.2  keys

  • 返回值是由key组成的特殊列表
  • 是可迭代的,可以被for循环
dic1 = {'name': 'wangys','age': 18}
ret = dic1.keys()
print(ret)
# dict_keys(['name', 'age'])
dic1 = {'name': 'wangys','age': 18}
ret = dic1.keys()
for key in ret:
    print(key)

3.3 values

  • 返回值是由values值组成的特殊列表
  • 是可迭代的,可以被for循环
dic1 = {'name': 'wangys','age': 18}
ret = dic1.values()
print(ret)
#dict_values(['wangys', 18])

3.4 items

  • 是有key value组成的小元组后再次组成一个特殊列表,可迭代,可以被for循环
dic1 = {'name': 'wangys','age': 18}
ret = dic1.items()
print(ret)
# dict_items([('name', 'wangys'), ('age', 18)])

猜你喜欢

转载自www.cnblogs.com/wc89/p/10702443.html