1
pkokp8 OP 比如 key 是 0,1,2
插入 4 时 value 是普通的,插入 插入 3 时发现 value 满足了某个条件,那么得把 0,1,2 删掉 dict 要么为空,要么只能且必定有一个满足条件的 value |
2
zwzmzd 2018-09-19 10:05:54 +08:00 via iPhone
需要的时候直接创建新字典就好了,不知道你的应用场景是啥
dict={3:vlaue} |
3
mengzhuo 2018-09-19 10:11:52 +08:00
这个字典会很大吗?(比如上 MB )
不大的话直接标记有效 index 就好了。 |
4
pkokp8 OP @zwzmzd 获取某个网页的回帖数据
特定回帖信息以前的楼层都需要忽略,并维护一个有效的楼层字典 每隔 1 小时获取一次,可能出现新的特定回复楼层,新楼层数量不会很多 我想错了,我现在第一次获取了所有楼层的数据,第二次只获取少量数据。之前想着增量维护 既然间隔这么长,我只需要获取所有的就行了,浪费了点流量,就没有这个问题了,我蠢了 此外即使增量,也可以如你说的加一个字典然后合并,效率不够用空间来换。长期使用资源紧缺的环境,切换到 py 脑子没转过来 |
5
jmc891205 2018-09-19 10:17:11 +08:00 via iPhone
你既然可以保证插入的时候 key value 都是唯一的 那没必要用 dict 直接用 list 就可以
|
7
pkokp8 OP @jmc891205 考虑过,不过 list 得手动排序,dict 自己能帮我排好序,key 是楼层号,考虑什么时候去排个序比较累我就换 dict 了
|
8
SuperMild 2018-09-19 10:27:25 +08:00
是这样吗,假设现有 5, 4, 3, 2, 1 楼,其中 3 楼满足条件,2, 1 楼被抛弃,假设下次获取时有 6 楼,就把 6 楼加进来。
|
9
eloah 2018-09-19 10:31:46 +08:00
这种情况不是用链表好多了,为何一定要用 dict
|
10
Hieast 2018-09-19 10:32:04 +08:00 via Android
考虑过 ordereddict 么,你重写一个 getitem 的魔术方法就是可以切片了。
|
11
pkokp8 OP @eloah list 需要排序,而每个元素没有排序的属性。我就获取了每个元素的 id,id 和元素作为键值,dict 就能帮我排序了。有别的方法吗
|
12
jmc891205 2018-09-19 10:40:53 +08:00
@pkokp8 手动排序?每次插入的时候做一个二分查找就够了 没必要做排序。
当然看你前面回帖里的需求 数据量很小 随便你怎么做都可以。 |
13
pkokp8 OP |
14
pkokp8 OP @jmc891205 可是天然的就有楼层号帮我排序,我还得做二分是不是多此一举了。用了 list 反而要多一个二分插入函数,结果貌似也没很方便
|
15
PythonAnswer 2018-09-19 10:45:25 +08:00 via iPhone
没必要。你 http 得来的是全部数据。
|
16
pkokp8 OP @PythonAnswer 看文档说,获取楼层数据有一个参数,all 或者默认。默认 20 个。没看过实现,不知道是不是全部数据,由于新增数据不可能多,我一开始想着增量获取,现在想想获取全部算了,数据量貌似也不太
|
17
lance6716 2018-09-19 13:18:27 +08:00 via Android
看不懂表述,像是单调队列
|