字典的学习
字典存在的必要?????????
字典的定义 a={}
字典是底层哈希存储的不用从头遍历查,找速度很快,字典是无序的
使用角度字典是描述的数据结构,“name”:"root" 使用上有描述性好存储
字典的特性
字典的key不能重复 添加有重复会覆盖
字典的定义a={} 可以这样,但是元祖不能这样定义
字典的数据类型的key 99%的都是字符串 和整型
value是任意数据类型
字典的取值是一行一行的取
怎么简单通过key去取value????? 记住要加引号
b={"ces":"12345",'ces1':'123456'}
print(b["ces"])
print(b['ces1'])
print(b.get("ces")) 这种取值,取不到不会报错 返回一个默认值none
修改值
b["ces"]='2112' 已经存在就覆盖,没有就新增
for key in b.keys(): b.keys()就是类列表对象,列表特征他都有但他不是一个真正的List
想用索引就可以强转List
for key,va in b.items(): 两个变量接收循到的key 和value
a={'刘德华' : 367, '张学友': 247 , '李小璐': 50, '刘老师': 1280}
单字典取value得和的写法
count=0 第一种写法
for i in a.values():
count+=i
print(count)
第二种写法
print(sum(a.valaus()))
取字典套集合的数据整合,这种类型的
b={'技术部' : (367, 500, 45), '人力资源部': (247, 368, 1280), '财务部': (87, 100, 24, 50)}
count=0
for v in b.values():
count=count+sum(v)
print(count)
a={'刘德华' : 367, '张学友': 247 , '李小璐': 50,'刘老师': 1280,'贾乃亮': 760}
print('刘德华' in a ) 注意in 就是默认判断key在不在
values重复的概率很大
a.get 和a.pop 区别 都弹出来一个是查一个是删除key
怎么更新字典的key ????????
pop取值并删除
del a['刘德华'] 这个也是删除
a['张三']=a.pop('刘德华') 实际上是先删除在增加 也叫用一行代码写出字典的更新和删除
del语句
del语句可以删除任何位置处的列表元素, 若知道某元素在列表中的位置则可使用del语句.
pop()可删除任意位置的元素并将其返回, 只需在括号内指定要删除元素的索引即可, 当括号内为空时则删除该列表最后一个元素并将其返回.
remove()方法可根据值删除元素, 若不知所要删除元素在列表中的位置时可用remove()删除, 需要注意的是remove()所删除的元素是列表中第一个配对的值
两个字典的update 意思两个字典合成一个字典
注意如果b里存在和a出一样了把值更新替换成a的 字典不能a+b 和a*b 操作
a={'刘德华' : 367, '张学友': 247 , '李小璐': 50,'刘老师': 1280,'贾乃亮': 760}
b={'本科':'没过'}
a.update(b)
print(a)
快速构造字典的方法
a={'刘德华' : 367, '张学友': 247 , '李小璐': 50,'刘老师': 1280,'贾乃亮': 760}
cc={}.fromkeys(a)
print(cc)
a={'刘德华' : 367, '张学友': 247 , '李小璐': 50,'刘老师': 1280,'贾乃亮': 760}
cc={}.fromkeys(a,0)
print(cc)
如果有两个key 会自动去掉重复的,
列表去重的三种方法
第一种方法
找一个新列表,发现不重复的往里面扔
第二种方法
把他强转成set 在转成List
第三种
先转成字典然后在转成list
a={'刘德华' : 367, '张学友': 247 , '李小璐': 50,'刘老师': 1280,'贾乃亮': 760}
b=list({}.fromkeys(a).keys())
print(b)
a=[{
"from":{"x":39.123, "y":40.234},
"to": {"x":39.123, "y":40.234}}]
jj={}
for key,value in a[0].items():
tmp=[]
for i in value.values():
tmp.append(str(i))
jj[key]=','.join(tmp)
print([jj])#要是套列表这么套