字典

#字典{'key':'value', 'key1':'value}
'''
数据类型分类:
    可变(不可哈希):list dict set
    不可变(可哈希):str int tuple bool
    容器类:list dic tuple
    非容器类: str int bool
字典的key必须是不可变类型,是唯一的;
value可以是任意类型
字典查询速度快,存储大量关系型数据
python3.5之前是无序的,3.6之后是有序的
'''
dic = {
    '性别':'男',
    '爱好':'女'
}
#增,key存在则更新,不存在则新增
dic['test1'] = True
print(dic)
dic['test1'] = False
print(dic)
#增,dict.setdefault(key, value),省略value则存None
dic.setdefault('test2')
print(dic)
#key存在则忽略,不存在则新增
dic.setdefault('test2', 'haha')
dic.setdefault('test3', 'haha')
print(dic)

#删,pop(key) 与列表相同,有返回值,返回key对应的value
print(dic.pop('test3'))
print(dic)
#pop()如key不存在会报错,需传默认值
print(dic.pop('test4', 'key不存在'))

#随机删除(按字典顺序,3.5之前无需……)返回值为元组,里面是删除的键值对
print(dic.popitem())
print(dic)
#按键值删除
del dic['test']
print(dic)
#清空字典
dic.clear()
print(dic)
#删除字典
del dic
#print(dic)

#改,第一种按前面增的方式直接访问key改
#第二种 dict.update(dict1),将dict1中所有键值对覆盖添加到dict中,dict1不变
msg = {'name': 'Jerry', 'age': 18}
dic1 = {'name': 'Tony', 'weight': 100}
msg.update(dic1)
print('msg:', msg,'dic1:', dic1)

#查
print(msg['name']#key不存在会报错
print(msg.get('name1'))#key不存在返回None
print(msg.get('name1'), '不存在')#key不存在可指定默认返回
for循环查询

#dict.keys(),特殊数据类型,返回字典的key
print(type(msg.keys()), msg.keys())
for key in msg.keys():
    print(key)
#可转换成列表
L_keys = list(msg.keys())
print('L_keys', L_keys)

#dict.values(),同keys,dict_values类型
print(type(msg.values()))
#dict.items(),dict_items类型,返回键值对列表,每一对是一个元组
print(type(msg.items()))
print(msg.items())

#分别赋值,必须一一对应
a, b = 1, 2
c, d = (1, 2)
print(a, b, c, d)
#单个参数是元组
for i in msg.items():
    print(i)
#两个参数分别赋值
for k, v in msg.items():
    print(k, v)

#字典嵌套
dicts = {
    'name_list': ['Jerry', 'Tony'],
    'status': None,
    'msg': {
        'age': 18,
        '爱好': ['女']
    }
}
#增加键值对
#dicts['学校'] = '野鸡大学'
dicts.setdefault('学校', '野鸡大学')
print(dicts)
#修改
#dicts['status'] = True
dicts.update({'status': True})
print(dicts)
#嵌套增加
dicts['name_list'].append('test')
print(dicts)
dicts['msg'].setdefault('test2')
print(dicts)
#改
dicts['msg'].update({'test2': 'haha'})
print(dicts)
dicts['msg']['test2'] = '没完了'
print(dicts)
dicts['msg']['爱好'].append('吃吃喝喝')
print(dicts)

 

上一篇:【字节面试题】牛客刷题偶遇字节后端笔试面经 撸它


下一篇:R语言编程——用不到30行代码,自制成语接龙小游戏