day5 字典的增删改查

 

列表里面的改 可以直接list[]=".."  赋值

也可以用字符串的操作方式list[].upper()等

 

数字类型分为:可变数据类型    不可变数据类型

不可变数据类型(可哈希  ”二分法查询”):元祖  bool int str(对于str进行的操作都形成一个新的字符串 原来字符串并没有改变)

可变数据类型(也叫不可哈希):list ,dict(唯一一个映射类型),set(集合本身是可变 但里面的元素是不可变的)

字典 的键一定是不可变数据类型(可哈西   查找速度快)值任意数据类型

dict优点:二分法查询  存储大量的关系型数据

特点:无序的(python3.5以后可能排序??不确定)

 

 

dic1 = {'age': 18, 'name': 'jin', 'sex': 'male', }
#
dic1['high'] = 185  # 没有这个键值对,添加
dic1['age'] = 16  # 有这个键值对,则值覆盖
print(dic1)
dic1.setdefault('weight', 150)  # 默认值是None
dic1.setdefault('name', '二哥')  # 有键值对不做任何改变,没有才添加
print(dic1)

<<<
{'age': 16, 'name': 'jin', 'sex': 'male', 'high': 185}
{'age': 16, 'name': 'jin', 'sex': 'male', 'high': 185, 'weight': 150}
#
dic2 = {'age': 18, 'name': 'jin', 'sex': 'male', "aaa":123,"bbb":999}
print(dic2.pop('age'))  # 按键删除 有返回值 返回“值”
print(dic2.pop('二哥', None))  # ,没有不会报错,可设置返回值
print(dic2)
print(dic2.pop('name', None))  # ,有就直接删除
print(dic2)
print(dic2.popitem())  # 默认删除最后一个  返回一个删除的键值的元祖
del dic2['sex']         #按键删除,没有返回值 没有这个键的话报错
print(dic2)
dic2.clear()                 #清空字典
print(dic2)


<<<
18
None
{'name': 'jin', 'sex': 'male', 'aaa': 123, 'bbb': 999}
jin
{'sex': 'male', 'aaa': 123, 'bbb': 999}
('bbb', 999)
{'aaa': 123}
{}
#
dic3 = {'age': 18, 'name': 'jin', 'sex': 'male', }
dic = {'name': 'alex', 'weight': 75}
dic3.update(dic)  # 把dic覆盖更新到dic3中 原字典dic不改变
print(dic3)
print(dic)


<<<
{'age': 18, 'name': 'alex', 'sex': 'male', 'weight': 75}
{'name': 'alex', 'weight': 75}
#
dic4 = {'age': 18, 'name': 'jin', 'sex': 'male', }
print(dic4.keys(), type(dic4.keys()))  # 返回一个列表
print(dic4.values(), type(dic4.values()))
print(dic4.items(), )
dic = dic4.items()
print(dic)
for i in dic4:  # 默认打印键
    print(i)
for i in dic4.values():  # 打印值
    print(i)
for i in dic4.items():
    print(i)  # 打印键值 以元祖形式
#面试题   a,b交换值
a,b=1,2                             
print(a,b)
a,b=1,2
a,b=b,a
print(a,b)         #内存存的1,2的地址和名称空间(变量和值得对应关系)
a,b=[1,2]
print(a,b)         #自动识别 看里面最小单位


<<<
1 2
2 1
1 2

 

for k, v in dic4.items():
    print(k, v)

print(dic4['name'])  # 没有这个键 就报错
print(dic4.get('name1', '没有这个键'))  # 查找,没有的话返回设置的值 默认返回None

<<<
dict_keys(['age', 'name', 'sex']) <class 'dict_keys'>
dict_values([18, 'jin', 'male']) <class 'dict_values'>
dict_items([('age', 18), ('name', 'jin'), ('sex', 'male')])
dict_items([('age', 18), ('name', 'jin'), ('sex', 'male')])
age
name
sex
18
jin
male
('age', 18)
('name', 'jin')
('sex', 'male')
age 18
name jin
sex male
jin
没有这个键

 

 

# 嵌套
dic = {"name": ['alex', 'wusir', 'taibai'],
'py9': {'time': '1213','learn_money': 19800,'addr': 'CBD'},
'age': 21}
dic['age'] = 56
print(dic)
dic['name'].append('ritian')
dic['name'][1]=dic['name'][1].upper() #
print(dic)
# dic['py9']['female']=6   #直接往py9增加一个键值对
dic['py9'].setdefault('female',6) #用default添加
print(dic)


<<<
{'name': ['alex', 'wusir', 'taibai'], 'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}, 'age': 56}
{'name': ['alex', 'WUSIR', 'taibai', 'ritian'], 'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD'}, 'age': 56}
{'name': ['alex', 'WUSIR', 'taibai', 'ritian'], 'py9': {'time': '1213', 'learn_money': 19800, 'addr': 'CBD', 'female': 6}, 'age': 56}
info=input('<<<')
for i in info:
    if i.isalpha():
        info=info.replace(i," ")
l=info.split()
print(len(l))


<<<
<<<qqq111nn3
2

 

 

 

---恢复内容结束---

posted on 2018-12-06 19:30  白的N次方  阅读(105)  评论(0编辑  收藏  举报

导航