菜鸟笔记
提升您的技术认知

python修改字典的值

在python中,之前最常用数据类型是list,简单好用。不过挨过一系列的毒打之后,发现字典,集合,装饰器才是更需要解决的问题。

1. 问题原型和答案

小明,小红,小刚是在一家保险公司工作,他们的工资每天分别是100,80,60元。上个月奖金余额分别是123,345,445。工资按天打入账号,问10天后, 账号中的数字是多少,用字典存储和运算。
我的答案:
初始值很简单,可以这样设置money = {'小明':123 ,'小红':345,'小刚':445 }
那么接下来怎么改变账号里的值呢?

money = {
  '小明':123 ,'小红':345,'小刚':445 }

for i in range(10):
    for k,v in money.items():
        if k=='小明':
            money[k]=v+100
        if k=='小红':
            money[k]=v+80
        if k == '小刚':
            money[k] =v+60

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

结果如下:当时面试官说主要考察字典的操作。不要纠结for循环时间复杂度,这里主要改变字典中元素的值,大家还有什么好的方法?

小明 1123
小红 1145
小刚 1045

2. 字典的遍历

正常来说,查看字典的值,一般用遍历的方法,比如:

money = {
  '小明':123 ,'小红':345,'小刚':445 }
k,v in money.items():
    print(k,v)
   
不用多说,结果当然很简单。
小明 123
小红 345
小刚 445

3. 字典增加元素

1. update()

增加元素的操作,列表中是append ,字典是update。但是别忘了,字典中不能有重复的值,否则会覆盖之前的元素。新加入Dav:

money = {
  '小明':123 ,'小红':345,'小刚':445 }
money.update({
  'Dav':345})
for k,v in money.items():
    print(k,v)
   
小明 123
小红 345
小刚 445
Dav 345

2. 直接加入

money['Dav']=78

4. 字典的删除

注意一下函数的使用方法

1.pop

money = {
  '小明':123 ,'小红':345,'小刚':445 }
money.pop('小明')
for k,v in money.items():
    print(k,v)
小红 345
小刚 445

2. del

money = {
  '小明':123 ,'小红':345,'小刚':445 }
del money['小明']
for k,v in money.items():
    print(k,v)

5. 字典其他常见操作

1.键值对互换

简直是骚操作,写反键值对的福音!方法1:

方法1:
mydict={
  "a":1,"b":2,"c":3}
mydict_new={
  }
for key,val in mydict.items():
    mydict_new[val]=key
    
方法2:
mydict={
  "a":1,"b":2,"c":3}
mydict_new=dict([val,key] for key,val in mydict.items())
方法3:
mydict={
  "a":1,"b":2,"c":3}
mydict_new=dict(zip(mydict.values(),mydict.keys()))

2. 字典和列表的相互转换

字典把键和值分别转换成立列表

a = {
  'a' : 1, 'b': 2, 'c' : 3} #字典中的key转换为列表
key_value = list(a.keys())
print('字典中的key转换为列表:', key_value) #字典中的value转换为列表
value_list = list(a.values())
print('字典中的value转换为列表:', value_list)

lst = list(a)   #强制转换默认键,即['a','b','c']

列表转字典

a = [1,2,3,4,5]
b = ['a','b','c','d','e']
d = zip(b,a)
print(dict(d)) 
##{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}