Python技巧

1. Python 字典组成的数组怎么进行去重

准备
元组转换为字典
t=((1,'a'), (2,'b'))
dict(t)
# 结果
{1: 'a', 2: 'b'}

# 如果要交换键和值
t=((1,'a'), (2,'b'))
dict((y, x) for x, y in t)
# 结果
{'a': 1, 'b': 2}

字典组成的数组,直接对数组采用set的方式进行去重,会报错

list_a = [{
		"name": "Tom",
		"age": 18
	},
	{
		"name": "Jerry",
		"age": 18
	}, {
		"name": "Tom",
		"age": 18
	}
]
set(list_a)

TypeError: unhashable type: 'dict'

原因:set去重的前提是该对象为不可变对象,而字典是可变对象,因此无法直接使用该方法去重。

1.1 reduce + lambda
from functools import reduce

list_a = [{
		"name": "Tom",
		"age": 18
	},
	{
		"name": "Jerry",
		"age": 18
	}, {
		"name": "Tom",
		"age": 18
	}
]
unique_list = reduce(lambda x, y: x if y in x else x + [y], list_a, [])
print(unique_list)

# 结果
[{'name': 'Tom', 'age': 18}, {'name': 'Jerry', 'age': 18}]
1.2 性能考虑
[dict(b) for b in set([tuple(a.items()) for a in list_a])]

你可能感兴趣的:(python,python,开发语言)