鱼C论坛

 找回密码
 立即注册
查看: 2609|回复: 0

[技术交流] 天真的我和字典比对

[复制链接]
发表于 2021-1-25 23:17:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 kipopo 于 2021-1-25 23:23 编辑

因为需求用的到字典比对
只取相同的keys
后来再网上找了个cmp 发现不能用是py2 的指令
当下心血来潮写了个自己的cmp
  1. def cmp1(dict1,dict2):
  2.     dictcmp = list(map(lambda key:key if key in dict2 else False,[key for key in dict1.keys()]))
  3.     return [dictcmp for dictcmp in dictcmp if dictcmp]
复制代码

后来才发现
还有更简单的...
  1. def cmp2(dict1,dict2):
  2.     if len(dict1) <len(dict2):
  3.         dict1 ,dict2 = dict2,dict1
  4.     return dict1.keys()-(dict1.keys()-dict2.keys())
复制代码
  1. print(cmp1(tasla,uta),'\n',cmp2(tasla,uta))

  2. ["3665','贸联-KY'", "2317','鸿海'", "2383','台光电'", "2313','华通'", "6282','康舒'", "2421','建准'", "2382','广达'", "2308','台达电'"]
  3. {"6282','康舒'", "3665','贸联-KY'", "2382','广达'", "2313','华通'", "2421','建准'", "2308','台达电'", "2317','鸿海'", "2383','台光电'"}
复制代码


两个都是回传 字典的keys
一个是 set
一个是 list

当我看到 set 的时候
我就知道我又有更容易的方法了…

  1. def cmp3(dict1,dict2):
  2.     set_dict1keys=set(dict1.keys())
  3.     set_dict2keys=set(dict2.keys())
  4.     return set_dict1keys & set_dict2keys
复制代码


这样可以做更多功能 當 model = True 的時候 交集
當 model = False 的時候 差
  1. def cmp3(dict1,dict2,model=True):
  2.     set_dict1keys=set(dict1.keys())
  3.     set_dict2keys=set(dict2.keys())
  4.     if model :
  5.         return set_dict1keys & set_dict2keys
  6.     elif model == False:
  7.         return set_dict1keys - set_dict2keys
  8.    
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-28 15:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表