【发布时间】:2016-02-25 21:47:22
【问题描述】:
我有一个字典 d 有 100 个键,其中的值是可变长度列表,例如
In[165]: d.values()[0]
Out[165]:
[0.0432,
0.0336,
0.0345,
0.044,
0.0394,
0.0555]
In[166]: d.values()[1]
Out[166]:
[0.0236,
0.0333,
0.0571]
这就是我想做的事情:对于d.values() 中的每个列表,我想将值组织到 10 个 bin 中(如果一个值满足标准,则将其扔到一个 bin 中,例如介于 0.03 之间和 0.04、0.04 和 0.05 等)。
我希望得到的结果看起来与 d 完全一样,但不是 d.values()[0] 是一个数字列表,我希望它是一个列表列表,就像这样:
In[167]: d.values()[0]
Out[167]:
[[0.0336,0.0345,0.0394],
[0.0432,0.044],
[0.0555]]
每个键仍将与相同的值相关联,但它们会被结构化到 10 个 bin 中。
我一直对嵌套的 for 循环和 if/else 等感到疯狂。解决此问题的最佳方法是什么?
编辑:大家好。只是想让你知道我解决了我的问题。我使用了@Brent Washburne 答案的变体。感谢您的帮助!
【问题讨论】:
-
您的最后一个示例显示了以前未显示的
In[167]和Out[166],但似乎是来自165的值,您能修改并澄清一下吗?另外,创建“垃圾箱”的逻辑是什么?您提到介于 0.03 和 0.04 之间,但实际上您所显示的数据都没有满足该标准。不清楚你在问什么...... -
抱歉,我进行了编辑以修复输入/输出。垃圾箱的逻辑是我知道最小值和最大值(大致对应于 0 和 0.15)并且我想要 10 个垃圾箱。所以实际上,我想要宽度约为 0.015 的垃圾箱(很抱歉在原始帖子中没有明确说明。)另外,我不明白你为什么说我的数据不符合标准。例如,从 Input[165] 中,d.values()[0][0] 是一个介于 0.03 和 0.04 之间的值...
-
您的输出包含多个超出分箱范围的值,例如 0.394 > 0.04 和 0.0555 > 0.04。那么,为什么要将这两个值与符合
0.03 <= value <= 0.04标准的值合并? -
啊,我真的很抱歉。我没有意识到我的输出如此混乱。我修好了。
标签: python dictionary binning