【面试实战题】编码实现对比2个Python字典?
测试开发栈
共 3660字,需浏览 8分钟
· 2021-05-15
使用过Python的同学相信肯定对使用高频的数据结构字典dict不会陌生,实际编码中也可能遇到这样的需求,需要对2个或多个dict做合并或者对比差异,今天就用这么一道面试题来手写Python的dict对比:
'''
对比两个 dict
:param dict1:
:param dict2:
:return: dict1 所独有的键值对, dict2 所独有的键值对, 2个dict的差异合并
'''
def diffDicts(dict1, dict2):
if isinstance(dict1, dict) and isinstance(dict2, dict):
diff_data = {}
only_dict1_has = {}
only_dict2_has = {}
d2_keys = list(dict2.keys())
for d1k in dict1.keys():
if d1k in d2_keys: # d1,d2都有。去往深层比对
d2_keys.remove(d1k)
temp_only_dict1_has, temp_only_dict2_has, temp_diff_data = diffDicts(dict1.get(d1k), dict2.get(d1k))
if temp_only_dict1_has:
only_dict1_has[d1k] = temp_only_dict1_has
if temp_only_dict2_has:
only_dict2_has[d1k] = temp_only_dict2_has
if temp_diff_data:
diff_data[d1k] = temp_diff_data
else:
only_dict1_has[d1k] = dict1.get(d1k) # d1有d2没有的key
for d2k in d2_keys: # d2有d1没有的key
only_dict2_has[d2k] = dict2.get(d2k)
return only_dict1_has, only_dict2_has, diff_data
else:
if dict1 == dict2:
return None, None, None
else:
return None, None, [dict1, dict2]
实现起来并不算太复杂,但涉及了dict的遍历,函数多返回值、递归等知识点。
调用方式很简单,返回2个dict的差异部分以及相同部分:
dict1_only, dict2_only, result = diffDicts(dict1, dict2)
纸上得来终觉浅,得知此事要躬行,编码还是要多实践!
评论
三个优秀的PyTorch实现语义分割框架
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达转自 | 机器学习AI算法工程使用的VOC数据集链接开放在文章中,预训练模型已上传Github,环境我使用Colab pro,大家下载模型做预测即可。代码链接: https://github.com/lixiang007
小白学视觉
0
你需要知道的20个常用的Python技巧
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达来源:https://medium.com翻译:小马Python的可读性和简单性是其广受欢迎的两大原因,本文介绍20个常用的Python技巧来提高代码的可读性,并能帮助你节省大量时间,下面的技巧将在你的日常编码练习中非常实用。1.
小白学视觉
0
金融研究 | 使用Python测量关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0
金融研究(更新) | 使用Python构建关键审计事项的「信息含量」
Tips: 公众号推送后内容只能更改一次,且只能改20字符。如果内容出问题,或者想更新内容, 只能重复推送。为了更好的阅读体验,建议阅读本文博客版, 链接地址https://textdata.cn/blog/2023-01-13-information-content-of-critical-aud
大邓和他的Python
0
谷歌员工爆料 Python 基础团队原地解散
转自 | 机器之心编辑 | 蛋酱什么?谷歌解雇了整个 Python 基础团队?「当与你直接共事的每个人,包括你的主管,都被裁员 —— 哦,是职位被削减,而你被要求安排他们的替代者入职,这些人被告知在不同的国家担任同样的职位,但他们并不为此感到高兴,这是很艰难的一天。」发布这一动态的 Tho
机器学习算法与Python实战
0
小目标检测实战
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达利用切片辅助的超级推断目标检测是计算机视觉中的基本任务之一。在高层次上,它涉及预测图像中物体的位置和类别。像You-Only-Look-Once(YOLO)系列中的最先进(SOTA)深度学习模型已经达到了令人瞩目的准确度。然而,目
小白学视觉
0
5000w+ 的大表如何拆?亿级别大表拆分实战复盘
前言笔者是在两年前接手公司的财务系统的开发和维护工作。在系统移交的初期,笔者和团队就发现,系统内有一张5000W+的大表。跟踪代码发现,该表是用于存储资金流水的表格,关联着众多功能点,同时也有众多的下游系统在使用这张表的数据。进一步的观察发现,这张表还在以每月600W+的数据持续增长,也就是说,不超
码农编程进阶笔记
0
五一抢票难,Github上这几个Python项目,你可以试试
又到五一长假啦(虽然其实就放了1天),大家是打算家里蹲or出去玩,又或者是在公司加班呢...今天给大家介绍三个和12306相关的项目,看看你是否用得上。/01/ py12306py12306购票助手,顾名思义,12306买票的~需要在python 3.6以上版本运行程序。1. 安装依赖gi
Crossin的编程教室
0