Python合并字典键值并去除重复元素的实例


Posted in Python onDecember 18, 2016

假设在python中有一字典如下:

x={‘a':'1,2,3', ‘b':'2,3,4'}

需要合并为:

x={‘c':'1,2,3,4'}

需要做到三件事:

1. 将字符串转化为数值列表
2. 合并两个列表并添加新的键值
3. 去除重复元素

第1步通过常用的函数eval()就可以做到了,第2步需要添加一个键值并添加元素,第3步利用set集合的性质可以达到去重的效果,不过最后需要再将set集合转化为list列表。代码如下:

x={'a':'1,2,3','b':'2,3,4'}
x['c']=list(set(eval(x['a'])+eval(x['b'])))
del x['a']
del x['b']
print x

输出结果为:

{'c': [1, 2, 3, 4]}

但是在批量处理中,可能会其中一个键值的元素只有1个,导致编译器会识别为int类型,导致出现错误。

x={'a':'1,2,3','b':'2'}
x['c']=list(set(eval(x['a'])+eval(x['b'])))
del x['a']
del x['b']
print x

运行结果为:

Traceback (most recent call last):
 File "test.py", line 2, in <module>
  x['c']=list(set(eval(x['a'])+eval(x['b'])))
TypeError: can only concatenate tuple (not "int") to tuple

处理方法是,人为地将'b'中的元素复制一份,使编译器不识别为int:

x={'a':'1,2,3','b':'2'}
x['c']=list(set(eval(x['a'])+eval(x['b']+','+x['b'])))
del x['a']
del x['b']
print x

这样就能正常运行。这里利用了set会去去除重复元素的特点,添加了相同的元素。不过,若是'b'中的元素为空,这个方法也会失效。这里需要利用python列表中最后一个元素后面允许跟一个逗号的性质,按如下方法处理即可。

x={'a':'1,2,3','b':''}
x['c']=list(set(eval(x['a']+','+x['b'])))
del x['a']
del x['b']
print x

运行结果:

{'c': [1, 2, 3]}

最后一种方法也能够处理前两种情况。

以上这篇Python合并字典键值并去除重复元素的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的pass语句使用方法讲解
May 14 Python
python中pandas.DataFrame排除特定行方法示例
Mar 12 Python
Python爬取网易云音乐热门评论
Mar 31 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
Python实现扩展内置类型的方法分析
Oct 16 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
Python中递归以及递归遍历目录详解
Oct 24 Python
Python PIL按比例裁剪图片
May 11 Python
python利用matplotlib库绘制饼图的方法示例
Dec 18 #Python
浅谈Python的垃圾回收机制
Dec 17 #Python
谈谈如何手动释放Python的内存
Dec 17 #Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 #Python
深入理解NumPy简明教程---数组2
Dec 17 #Python
深入理解NumPy简明教程---数组1
Dec 17 #Python
Python脚本获取操作系统版本信息
Dec 17 #Python
You might like
php的正则处理函数总结分析
2008/06/20 PHP
PHP session有效期问题
2009/04/26 PHP
php 过滤器实现代码
2010/08/09 PHP
header跳转和include包含问题详解
2012/09/08 PHP
如何使用PHP批量去除文件UTF8 BOM信息
2013/08/05 PHP
php的ddos攻击解决方法
2015/01/08 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
2012/10/15 Javascript
文本框文本自动补全效果示例分享
2014/01/19 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
easyui validatebox验证
2016/04/29 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
[js高手之路]寄生组合式继承的优势详解
2017/08/28 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
巴西宠物商店:Cobasi
2019/04/19 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
质量承诺书格式范文
2015/04/28 职场文书
幽默导游词开场白
2015/05/29 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
详解NodeJS模块化
2021/06/15 NodeJs
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫