python – 合并字典保留重复键的值
发布时间:2020-12-20 12:06:54 所属栏目:Python 来源:网络整理
导读:给定n个字典,编写一个函数,该函数将返回一个唯一字典,其中包含重复键的值列表. 例: d1 = {'a': 1,'b': 2}d2 = {'c': 3,'b': 4}d3 = {'a': 5,'d': 6} 结果: newdict{'c': 3,'d': 6,'a': [1,5],'b': [2,4]} 我的代码到目前为止: def merge_dicts(*dicts):..
给定n个字典,编写一个函数,该函数将返回一个唯一字典,其中包含重复键的值列表.
例: d1 = {'a': 1,'b': 2} d2 = {'c': 3,'b': 4} d3 = {'a': 5,'d': 6} 结果: >>> newdict {'c': 3,'d': 6,'a': [1,5],'b': [2,4]} 我的代码到目前为止: >>> def merge_dicts(*dicts): ... x = [] ... for item in dicts: ... x.append(item) ... return x ... >>> merge_dicts(d1,d2,d3) [{'a': 1,'b': 2},{'c': 3,'b': 4},{'a': 5,'d': 6}] 生成一个新字典的最佳方法是什么,该字典会产生这些重复键的值列表? 解决方法def merge_dicts(*dicts): d = {} for dict in dicts: for key in dict: try: d[key].append(dict[key]) except KeyError: d[key] = [dict[key]] return d 这回归: {'a': [1,4],'c': [3],'d': [6]} 这个问题略有不同.这里所有字典值都是列表.如果长度为1的列表不需要,则添加: for key in d: if len(d[key]) == 1: d[key] = d[key][0] 在return d语句之前.但是,我无法想象你什么时候想要删除列表. (考虑将列表作为值的情况;然后删除项目周围的列表会导致模糊的情况.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |