我有一个带有值的嵌套列表:
list = [
...
['Country1', 142.8576737907048, 207.69725105029553, 21.613192419863577, 15.129178465784218],
['Country2', 109.33326343550823, 155.6847323746669, 15.450489646386226, 14.131554442715336],
['Country3', 99.23033109735835, 115.37122637190915, 5.380298424850267, 5.422030104456135],
...]
我想按数量级计数第二个索引/列中的值,从最低数量级开始到最大数量...
99.23033109735835 = 10 <= x < 100
142.8576737907048 = 100 <= x < 1000
9432 = 1000 <= x < 10000
目的是输出一个简单的char(#)计数,以了解每个类别中有多少索引值,例如
10 <= x < 100: ###
100 <= x < 1000: #########
我首先从获取索引的
max()
和min()
值开始,以便自动计算最大和较小量级类别,但是我不确定如何将列中的每个值与量级关联...如果有人可以为我指明正确的方向,或者给我一些想法,我将不胜感激。 最佳答案
此函数会将您的double变成整数数量级:
>>> def magnitude(x):
... return int(math.log10(x))
...
>>> magnitude(99.23)
1
>>> magnitude(9432)
3
(因此
10 ** magnitude(x) <= x <= 10 ** (1 + magnitude(x))
代表所有x
)。只需将大小用作关键,并计算每个关键点的出现次数。
defaultdict
在这里可能会有所帮助。请注意,此幅度仅适用于10的正幂(因为
int(double)
截断取整为零)。用
def magnitude(x):
return int(math.floor(math.log10(x)))
相反,如果这对您的用例很重要。 (感谢larsmans指出这一点)。
关于Python:按数量级对列表进行分类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16839190/