
[{'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}, {'姓名':'张三','体重':76,'UpdateTime':'xxx'}] 只判断姓名,体重即可
自己现在写的算法,是 for,for,if,if 循环历遍这样判断,最后还是能能弄出来的,
看到网上也貌似有一些一行有 lambda 搞定的优雅写法,只能学习到以一个键值对做判断的写法。。。。
1 teawithlife 2020 年 9 月 7 日 将姓名和体重拼成一个字符串,然后按这个新字符串去重就可以了 |
2 LokiSharp 2020 年 9 月 7 日 via iPhone lambda 就是语法糖,没必要强求 |
3 dongxiao 2020 年 9 月 7 日 via Android 这就是 SQL 根据某几个字段 distinct 吧,可以用 pandas 转成 DataFrame 然后 drop_duplicates,设置 subset 即可,或者用空间换时间,建个 set 存储已见到的数据 tuple,不在 set 内则追加新列表,一遍循环即可 |
4 vipppppp 2020 年 9 月 7 日 一些语法糖本质上都是遍历,关键是回头看的时候又是一脸懵逼。。 借助一个 set 来过滤应该性能上是最高的吧 |
5 ruanimal 2020 年 9 月 7 日 >>> 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 年 9 月 7 日 解法 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 年 9 月 7 日 dict1.items() & dict2.items() 自己看看结果,剩下的自己写吧 |
8 weyou 2020 年 9 月 7 日 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 年 9 月 7 日 还有 dict1.items() - dict2.items() 同上,怎么组合自己想吧 |
10 wysnylc 2020 年 9 月 7 日 |
11 TimePPT PRO 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 年 9 月 8 日 list({(d['姓名'], d['体重']): d for d in data}.values()) |
13 billgreen1 2020 年 9 月 9 日 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 年 9 月 9 日 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 年 9 月 10 日 ```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 年 9 月 11 日 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 年 9 月 11 日 @weyou 大神,没看懂,请指点指点。 |
18 weyou 2020 年 9 月 12 日 via Android @biglazycat 通过字典解析式( dictionary comprehension )以(“姓名”“体重”)这个 tuple 为 key 生成新的字典用来去重,然后获取 values 就是去重后的结果了。 |
19 biglazycat 2020 年 10 月 24 日 @weyou 大神好厉害,牛 B 。 |