我有一个带有值的嵌套列表:

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/

10-10 17:54