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去重的前提是该对象为不可变对象,而字典是可变对象,因此无法直接使用该方法去重。
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}]
[dict(b) for b in set([tuple(a.items()) for a in list_a])]