Python基础之字典操作

字典

字典的优点:

dict key 必须是不可变数据类型,可哈希,
value:任意数据类型。
dict 优点:二分查找去查询
存储大量的关系型数据
特点:无序的(指的是不可人为的去改变顺序)

数据类型划分为:可变数据类型和不可变数据类型

可变数据类型(不可哈希的):

list、dict、set

不可变数据类型(可哈希的):

int、str、tuple、bool

定义一个字典
dict1 = {'age': 25, 'sex': '男', 'hight': 171}
字典的增
dict1['eye'] = 'blue'
{'age': 25, 'sex': '男', 'hight': 171, 'eye': 'blue'}

# setdefault 函数
字典中有这个键,就什么都不做
dict1.setdefault('eye', 'green') 
{'age': 25, 'sex': '男', 'hight': 171, 'eye': 'blue'}

字典中没有这个键,就增加
dict1.setdefault('city', 'hangzhou') 
{'age': 25, 'sex': '男', 'hight': 171, 'eye': 'blue', 'city': 'hangzhou'}

不指定值,则默认为None
dict1.setdefault('city')
{'age': 25, 'sex': '男', 'hight': 171, 'eye': 'blue', 'city': None}

字典的删除

最原始的方法,但是如果删除的键不存在则会报错导致程序崩溃 无返回值
del dict1['age']

# 保险的方法 pop函数
如果有键则删除,没有就返回指定的None,返回值是指定键的值
dict1.pop('age', None)

清空字典
dict1.clear()

随机删除一个键 有返回值,以元组形式的键值对
dict1.popitem()

字典的修改

直接修改
dict1['age'] = 35

update函数 更新合并
dic = {'names': 'jm001', 'sex': 'woman'}
dict2 = {'hight': 172}

dic2更新合并dic
dict2.update(dic)
{'hight': 172, 'names': 'jm001', 'sex': 'woman'}

字典的查

dict1 = {'age': 25, 'sex': '男', 'hight': 171}
dict1.keys()
dict_keys(['age', 'sex', 'hight'])

dict1.values()
dict_values([25, '男', 171])

dict1.items()
dict_items([('age', 25), ('sex', '男'), ('hight', 171)])

位置的交换
a = 1
b = 2
b, a = a, b
2 1
a, b = [1, 2]
1 2
a, b = [2,3], [5,6]
[2, 3] [5, 6]


原始的查找,如果找不到会报错
dict1['age']

get函数查找,找不到就默认返回None,当然也可以指定
dict1.get('age', None)

字典的混合使用

dict_json = {
    'city': ['北京', '上海', '杭州'],
    'data': {
        'name': 'jm001',
        'sex': 'xiaoxinggan',
        'video_list': ['s', 'a', 'd']
    },
    'age': 25
}

向city字段里面追加 深圳
dict_json['city'].append('深圳')
print(dict_json)
{'city': ['北京', '上海', '杭州', '深圳'], 'data': {'name': 'jm001', 'sex': 'xiaoxinggan', 'video_list': ['s', 'a', 'd']}, 'age': 25}

把data里的sex 值全部改为大写
dict_json['data']['sex'] = dict_json['data']['sex'].upper()
print(dict_json)
{'city': ['北京', '上海', '杭州', '深圳'], 'data': {'name': 'jm001', 'sex': 'XIAOXINGGAN', 'video_list': ['s', 'a', 'd']}, 'age': 25}

向s里面添加键值对 hobby:eat
dict2 = {'hobby': 'eat'}
dict_json['data']['video_list'].append(dict2)
print(dict_json)
{'city': ['北京', '上海', '杭州', '深圳'], 'data': {'name': 'jm001', 'sex': 'xiaoxinggan', 'video_list': ['s', 'a', 'd', {'hobby': 'eat'}]}, 'age': 25}

需求

随便输入一个字符串中包含数字和字母的,找出相连整数出现的次数

info = input('>>>')

for i in info:
    if i.isalpha():
        info = info.replace(i, ' ')
res = info.split()
l = len(res)
print(l)

这里需要注意一下,for循环一个不可变类型,其实是一开始就将整个循环次数循序的机制读取到内存中,不管这个类型在你操作后怎么变化,这些机制是从始至终都要执行完毕的

原文地址:https://www.cnblogs.com/lishi-jie/p/9862934.html