字典的优点:
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 循环一个不可变类型, 其实是一开始就将整个循环次数循序的机制读取到内存中, 不管这个类型在你操作后怎么变化, 这些机制是从始至终都要执行完毕的
来源: http://www.bubuko.com/infodetail-2824074.html