Python 去重问题

2022-06-20 10:36:38 +08:00
 QGabriel
list1 = [{b: 1, c: 2}, {b: 2, c: 3}, {b: 3, c: 4},{b: 2, c: 1}]
list2 = [{a: 1, d: 0.1},{a: 2, d: 0.1},{a: 3, d: 0.2},{a: 4, d: 0.3},{a: 5, d: 0.1},{a: 6, d: 0.1}]

list1 和 list2 都是 DataFrame.

问题 1: list1 怎么把{b: 2, c: 1}这种数据范围重复的值去掉?
问题 2: 把 list2 中符合(a>=b and a <= b)的 d 字段 value 相加赋值给 list1[0]['d']


各位大佬帮忙解答一下或提供思路 谢谢了
2741 次点击
所在节点    Python
7 条回复
dier
2022-06-20 10:59:16 +08:00
Python 小白来试着回复一下
问题 1 ,你列出来的并不是重复内容呀。还是说你只想在 list1 中只保留一个 b,c 的字典?

问题 2 ,你这个判断条件不成立呀,a 怎么可能同时大于等于 b 又小于等于 b?
QGabriel
2022-06-20 11:03:34 +08:00
@dier 可能我没表达明白~
问题 1 => list1 中 {b: 1, c: 2} 和 {b: 2, c: 1} 这两个对象的 value 在同一个区间范围 我就算他是重复的~
问题 2 => list2 中的 a 如果在 list1 中的某个对象 b-c 的区间范围 就把符合条件 list2 的对象中的 d 值相加
enrolls
2022-06-20 11:17:43 +08:00
问题 1 ,dict 转 tuple?
QGabriel
2022-06-20 11:25:42 +08:00
@enrolls 嗯 是个思路 谢谢
InvincibleDream
2022-06-20 11:41:28 +08:00
放进一个 set 里就没有重复的了
RyanLin1995
2022-06-22 11:05:23 +08:00
nyxsonsleep
2022-06-24 00:32:06 +08:00
问了两个问题,楞是没有一个问题是直接描述正确的。。。唯一明白人还只有#1
Q1:等于是构造了一个数据结构
A1:数据结构是不能像描述的那样判断重复的,所以要么重构数据结构要么重写=运算符。
具体而言很简单,遍历 list ,b c 交换值形成新的 dict 子元素,再做一重遍历与其他的子元素做对比。相等则重复。
经典两重循环条件判断查重。
Q2:重点是筛选符合条件的 list2 中的子元素。不会有人连取 value 和赋值都不会的吧。
A2:直观来说,筛选不就是遍历吗?遍历完了,就该求和了,结果显而易见。
想用点内置函数就用 filter 函数做筛选,reduce 函数求和。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/860794

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX