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

作者:jingxian 时间:2022-02-10 17:48:40 

假设在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,字典,键值
0
投稿

猜你喜欢

  • Mootools 1.2教程(4)——函数

    2008-11-18 15:36:00
  • FF和IE之间7个JavaScript的差异[译]

    2009-05-04 18:19:00
  • C#调用Python的URL接口的示例

    2022-08-22 21:49:27
  • 隐藏修改文件时间和文件属性的ASP脚本

    2011-03-17 11:15:00
  • 网页切片算法的若干问题

    2008-04-17 13:10:00
  • Myeclipse链接Oracle等数据库时lo exception: The Network Adapter could not establish the connection

    2023-07-19 12:40:02
  • Python 函数返回值的示例代码

    2021-10-12 19:30:23
  • python通过百度地图API获取某地址的经纬度详解

    2021-11-06 12:14:45
  • 简述Asp与XML之间的关系

    2008-04-17 10:46:00
  • Python编程中的反模式实例分析

    2021-02-01 09:54:26
  • 使用Python编程分析火爆全网的鱿鱼游戏豆瓣影评

    2023-10-11 00:35:26
  • OpenCV 图像梯度的实现方法

    2023-07-14 08:25:43
  • Python多线程与多进程相关知识总结

    2021-07-06 21:37:16
  • 基于jQuery实现的立体文字渐变效果

    2009-05-18 19:15:00
  • Docker实践之python应用容器化

    2023-06-07 03:29:43
  • python基于搜索引擎实现文章查重功能

    2022-01-21 19:25:50
  • asp用正则过滤html标签

    2008-01-19 16:34:00
  • python中异常捕获方法详解

    2021-10-30 10:06:09
  • ASP字符串16进制互转

    2008-06-24 12:28:00
  • JScript 的内存回收

    2007-10-16 20:02:00
  • asp之家 网络编程 m.aspxhome.com