在python中,之前最常用数据类型是list,简单好用。不过挨过一系列的毒打之后,发现字典,集合,装饰器才是更需要解决的问题。
小明,小红,小刚是在一家保险公司工作,他们的工资每天分别是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
正常来说,查看字典的值,一般用遍历的方法,比如:
money = {
'小明':123 ,'小红':345,'小刚':445 }
k,v in money.items():
print(k,v)
不用多说,结果当然很简单。
小明 123
小红 345
小刚 445
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
注意一下函数的使用方法
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)
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}