返回信息流#### 有一个多层嵌套的字典 需要遍历 里面value为int型 并且大于3的数做count,然后对刚才涉及的value都 value/=count,有什么办法获得这些value的指针,只遍历一次就可以么?
比如:
```python
data = {
'data1' : {'value': 6, 'data2' : {'value': 4}},
'value': 2
}
result = func(data )
print result:
result = {
'data1' : {'value': 3, 'data2' : {'value': 2}},
'value': 2
}
```
** 如何做到func中只遍历一次data 把'value': 6 和'value': 4的指针保留下来供后续操作**
这是一条镜像帖。来源:北邮人论坛 / python / #19689同步于 2017/10/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
python中如何获得对象的指针?
hongbaoshu
2017/10/9镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
不一定key都叫“data”例子名字是随便起的
【 在 a940100079 的大作中提到: 】
: func中对data["data"]循环调用fun(data["data"])
: 传递过程中传递的是指针
【 在 hongbaoshu 的大作中提到: 】
: [md]
: #### 有一个多层嵌套的字典 需要遍历 里面value为int型 并且大于3的数做count,然后对刚才涉及的value都 value/=count,有什么办法获得这些value的指针,只遍历一次就可以么?
: 比如:
: ...................
看来只能把 dict整体变成list了,但是 value也不是固定: 一个节点dict里面多个value, value1, value2...N,
第二次的循环里 还是要判断 valueX 是不是>3,才能操作
【 在 lance6716 的大作中提到: 】
: [upload=1][/upload]
list里面存放dict的“父节点”(我也不知道正规的名词是啥,有待暖神临幸这个帖子),就可以变相的存储“原始数据类型的指针”。具体在data里找到那些节点需要自己写一个小逻辑递归或者宽度优先地去找。
因为count的值必须要迭代完一遍才能确定啊,知道count的值以后去修改就需要第二遍,除非你把除以count的时机放到使用Node.value的值的时候
【 在 hongbaoshu 的大作中提到: 】
: 看来只能把 dict整体变成list了,但是 value也不是固定: 一个节点dict里面多个value, value1, value2...N,
: 第二次的循环里 还是要判断 valueX 是不是>3,才能操作
这块要是 有办法能直接拿到拿到Node.valueX 的指针或者类似机制 就不用小逻辑了,等暖神 解答了
【 在 lance6716 的大作中提到: 】
: list里面存放dict的“父节点”(我也不知道正规的名词是啥,有待暖神临幸这个帖子),就可以变相的存储“原始数据类型的指针”。具体在data里找到那些节点需要自己写一个小逻辑递归或者宽度优先地去找。
: 因为count的值必须要迭代完一遍才能确定啊,知道count的值以后去修改就需要第二遍,除非你把除以count的时机放到使用Node.value的值的时候
直接拿到Node.valueX 的指针也需要一次遍历啊,总之一定需要两遍(另一遍是value/count的修改)
【 在 hongbaoshu 的大作中提到: 】
: 这块要是 有办法能直接拿到拿到Node.valueX 的指针或者类似机制 就不用小逻辑了,等暖神 解答了
第二遍就不用遍历查找了,直接改地址里的数就行了,时间复杂度小多了。比如有10000个valueX其中只有2个>3,那第二遍只用改2个指针就行。
【 在 lance6716 的大作中提到: 】
: 直接拿到Node.valueX 的指针也需要一次遍历啊,总之一定需要两遍(另一遍是value/count的修改)
那还是我那个图,只把符合条件的value的父节点加入列表。要是父节点不只有一个Value的话就把符合条件的Value1、Value4这些“名字”也顺便存下来
【 在 hongbaoshu 的大作中提到: 】
: 第二遍就不用遍历查找了,直接改地址里的数就行了,时间复杂度小多了。比如有10000个valueX其中只有2个>3,那第二遍只用改2个指针就行。