[{'姓名':'张三','体重':76,'UpdateTime':'xxx'},
{'姓名':'张三','体重':76,'UpdateTime':'xxx'},
{'姓名':'张三','体重':76,'UpdateTime':'xxx'},
{'姓名':'张三','体重':76,'UpdateTime':'xxx'}]
只判断姓名,体重即可
自己现在写的算法,是 for,for,if,if 循环历遍这样判断,最后还是能能弄出来的,
看到网上也貌似有一些一行有 lambda 搞定的优雅写法,只能学习到以一个键值对做判断的写法。。。。
1
teawithlife 2020-09-07 18:18:24 +08:00
将姓名和体重拼成一个字符串,然后按这个新字符串去重就可以了
|
2
LokiSharp 2020-09-07 18:22:48 +08:00 via iPhone
lambda 就是语法糖,没必要强求
|
3
dongxiao 2020-09-07 18:23:53 +08:00 via Android 1
这就是 SQL 根据某几个字段 distinct 吧,可以用 pandas 转成 DataFrame 然后 drop_duplicates,设置 subset 即可,或者用空间换时间,建个 set 存储已见到的数据 tuple,不在 set 内则追加新列表,一遍循环即可
|
4
vipppppp 2020-09-07 18:37:47 +08:00
一些语法糖本质上都是遍历,关键是回头看的时候又是一脸懵逼。。
借助一个 set 来过滤应该性能上是最高的吧 |
5
ruanimal 2020-09-07 18:46:09 +08:00
>>> from itertools import groupby
... ... data = [ ... {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, ... {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, ... {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, ... {'姓名':'张三','体重':76,'UpdateTime':'xxx'} ... ] ... ... helper = lambda i: (i['姓名'], i['体重']) ... result = [list(values)[0] for _, values in groupby(sorted(data, key=helper), key=helper)] |
6
ruanimal 2020-09-07 18:48:40 +08:00
解法 2
data = [ {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'} ] result_map = {} for i in data: result_map[(i['姓名'], i['体重'])] = i result = list(result_map.values()) |
7
imn1 2020-09-07 18:49:25 +08:00
dict1.items() & dict2.items()
自己看看结果,剩下的自己写吧 |
8
weyou 2020-09-07 18:52:24 +08:00 3
data = [
{'姓名':'王二','体重':60,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':70,'UpdateTime':'xxx'}, {'姓名':'李四','体重':70,'UpdateTime':'xxx'}, ] list({(r['姓名'], r['体重']): r for r in data}.values()) |
9
imn1 2020-09-07 18:54:51 +08:00
还有
dict1.items() - dict2.items() 同上,怎么组合自己想吧 |
10
wysnylc 2020-09-07 19:01:43 +08:00
|
11
TimePPT 2020-09-07 19:56:49 +08:00 3
import pandas as pd
data = [{'姓名':'张三','体重':76,'UpdateTime':'2019-09-09'}, {'姓名':'张三','体重':76,'UpdateTime':'2020-03-20'}, {'姓名':'张三','体重':76,'UpdateTime':'2020-08-11'}, {'姓名':'张三','体重':76,'UpdateTime':'2020-09-06'}] df = pd.DataFrame(data=data) df_uniq = df.drop_duplicates(subset=['姓名', '体重']) df_uniq |
12
aijam 2020-09-08 05:20:09 +08:00
list({(d['姓名'], d['体重']): d for d in data}.values())
|
13
billgreen1 2020-09-09 10:00:22 +08:00
sort_key = lambda doc:(doc['姓名‘], doc['体重'])
[next(iterator) for key, iterator in itertools.groupby(sorted(data, key=sort_key), key = sort_key)] |
14
HiddenNPC 2020-09-09 16:22:03 +08:00
data_list = [{'姓名': '张三', '体重': 76, 'UpdateTime': 'xxx'},
{'姓名': '张三', '体重': 76, 'UpdateTime': 'xxx'}, {'姓名': '张三', '体重': 76, 'UpdateTime': 'xxx'}, {'姓名': '张三', '体重': 76, 'UpdateTime': 'xxx'}] print(reduce(lambda x, y: x if y in x else x + [y], [[], ] + data_list)) # [{'姓名': '张三', '体重': 76, 'UpdateTime': 'xxx'}] |
15
Pzqqt 2020-09-10 08:35:23 +08:00
```python
l = [{'姓名':'张三','体重':76,'UpdateTime':'aaa'}, {'姓名':'张三','体重':76,'UpdateTime':'bbb'}, {'姓名':'张三','体重':76,'UpdateTime':'ccc'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}] d = {} for i in range(len(l)): d = {**d, **l[i]} # d == {'姓名': '张三', '体重': 76, 'UpdateTime': 'xxx'} ``` |
16
biglazycat 2020-09-11 21:29:08 +08:00
dict_list = [{'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}]
list_dict = {} for i in dict_list: list_dict.setdefault((i['姓名'], i['体重']), []).append('') print(list_dict) |
17
biglazycat 2020-09-11 21:41:36 +08:00
@weyou 大神,没看懂,请指点指点。
|
18
weyou 2020-09-12 00:13:36 +08:00 via Android
@biglazycat 通过字典解析式( dictionary comprehension )以(“姓名”“体重”)这个 tuple 为 key 生成新的字典用来去重,然后获取 values 就是去重后的结果了。
|
19
biglazycat 2020-10-24 18:54:51 +08:00
@weyou 大神好厉害,牛 B 。
|