首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

dict和set混合运算?

需求:当用户修改其资料时,需要把本次修改的内容列举出来。例如用户名由原来的“栓柱”改为“狗剩”,年龄由“20”改为18。当然用户属性有很多,代码里一个个属性去判断显然不太雅观。

接口方法中所有的参数都在一个字典里(newDataDict),也就是说newDataDict里包含了所有要更新的参数及其值。而用户数据在redis中,从redis中获取到数据最终能转换成一个类对象(比如叫userObj)。userObj对象是可以通过__dict__方法转换成一个字典的。

那么,这两个字典可以发生关系,然后得到我们想要的东西么?

答案是肯定的。

userObj是尚未修改的数据,转换成字典之后暂且叫做userDict,模拟数据如下:

# newDataDict 接口方法中收到的参数

newDataDict = {

'id':566,

'name':'狗剩',

'age':18,

'addr':'三里屯乡',

'phone':'15766666666',

'gender':'男'

}

# 数据库中已有的用户信息数据

userDict = {

'id':566,

'name':'狗蛋',

'age':20,

'addr':'牤牛屯乡',

'phone':'15766666666',

'gender':'男'

}

已知字典newDataDict和字典userDict,如何求userDict中被更新的元素的key?

先求出两个字典中共有的key的交集,再求出key:val的交集,前者再对后者取交集就得到了那些被修改了的key。

ret=set(newDataDict) &set(userDict) - \

set(dict(set(newDataDict.items()) &set(userDict.items())))

print(ret)

打印结果为:

{'age', 'name', 'addr'}

拿到本次会更新的参数名,再拿到修改前和修改后的数据,就很简单啦。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180711G1ZOEH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券