字典的操作

字典

  • 用{}括起来,以键值对存储的容器型数据类型
  • 键(唯一的):必须是不可变的数据类型(常用:str,int)
  • 值:可以是任意数据类型、对象
  • 字典3.5x版本之前(包括3.5)是无序的。
  • 字典3.6x会按照初次建立字典的顺序排列,学术上不认为是有序的。
  • 字典3.7x之后都是有序的。

优点:

  • 存储数据关联性比较强
  • 字典的查询数度非常快

缺点:

  • 以空间换时间

字典创建方法

#方式一
dic=dict((('ont',1),('two',2),('three',3)))
print(dic)

#方式二
dic=dict(one=1,two=2,three=3)
print(dic)

#方式三
dic=dict({'one':1,'two':2,'three':3})
print(dic)

#方式四(update)有则更新,无则添加
dic={'name':'xiaoxiannv','age':20}
dic.update([(1,'a'),(2,'b'),(3,'c')])
print(dic)
得:
{'name': 'xiaoxiannv', 'age': 20, 1: 'a', 2: 'b', 3: 'c'}

#合并两个字典
dic={'name':'xiaoxiannv','age':20}
dic1={ 1: 'a', 2: 'b', 3: 'c'}
dic.update(dic1)
print(dic)
得:
{'name': 'xiaoxiannv', 'age': 20, 1: 'a', 2: 'b', 3: 'c'}

#方式四(快速创建一个字典)
a=dict.fromkeys('123',666)
print(a)
得:{'1': 666, '2': 666, '3': 666}

#坑(值公用一个)
b=dict.fromkeys([1,2,3],[])
b[1].append(666)
print(b)
得:{1: [666], 2: [666], 3: [666]}

b=dict.fromkeys([1,2,3],[])
b[1]=666
print(b)

得:{1: 666, 2: [], 3: []}

dict增

#增

# 方式一(有则改之,无则加之)
dic={'name':'xiaoxiannv','age':20}
dic['hobby']='睡觉'
print(dic)

# 方式二(setdefault)(有则不变,无责加之)
dic={'name':'xiaoxiannv','age':20}
dic.setdefault('hoppy','摄影')
print(dic)

dict删

# 删
#方式一(三颗星,重要)
dic={'name':'xiaoxiannv','age':20}
dic.pop('name')
print(dic)

dic={'name':'xiaoxiannv','age':20}
ret=dic.pop('hoppy','没有此键')      #有第二参数,设置第二参数则不会报错
print(ret)

#方式二(清空
dic={'name':'xiaoxiannv','age':20}
dic.clear()
print(dic)

#方式三
dic={'name':'xiaoxiannv','age':20}
del dic['age']
print(dic)

dict改

#改
# 方式一(有则改之,无则加之)
dic={'name':'xiaoxiannv','age':20}
dic['hobby']='睡觉'
print(dic)

dict查

# 查
# 方式一
dic={'name':'xiaoxiannv','age':20}
print(dic['age'])
print(dic['age1'])   #没有此数据时将会报错

#方式二
di=dic.get('name')
di1=dic.get('name1','没有此数据')   #不会报错,有第二参数
print(di1)

keys,values,items的使用

dic={'name':'xiaoxiannv','age':20}

print(dic.keys())    #获取字典所有键
print(dic.values())   #获取字典所有值
print(dic.items())     #获取整个键值对,以元组的形式



#keys(),values()都可以直接转换成列表的形式
dic={'name':'xiaoxiannv','age':20}
print(list(dic.keys()))

dic={'name':'xiaoxiannv','age':20}
print(list(dic.values()))


#items,把键值对都存在一个列表
dic={'name':'xiaoxiannv','age':20}
a=[]
for k ,v in dic.items():
    a.append(k)
    a.append(v)
print(a)

字典常见错误纠正

  • 循环一个字典时,改变这个字典的大小,就会报错
dic={'k1':1,'k2':2,'k3':4,'ss':5}

for i in dic.keys():
    if 'k' in i:
        dic.pop(i)
print(dic)       #循环一个字典时,改变这个字典的大小,就会报错

得:
  File "F:/y1/day01/s2.py", line 3, in <module>
    for i in dic.keys():
RuntimeError: dictionary changed size during iteration

字典排序

dic={'a': 64, 'c': 54, 'b': 65}
s=list(sorted(dic.items(),key=lambda a:a[1],reverse=True))
print(dict(s))

dic=[{'name': 64}, {'name': 54},{ 'name': 65}]
s1=list(sorted(dic,key=lambda a:a['name']))
print(s1)
posted @ 2021-06-03 17:19  刘家小仙女  阅读(60)  评论(0编辑  收藏  举报