我的str(float)在直方图字典转换中被破坏,我该如何阻止它?

时间:2013-04-04 08:25:23

标签: python dictionary histogram

当尝试对数字列表进行直方图编码时(str格式),我的所有数字都会被分解 例如

a = ['1','1.5','2.5']

运行直方图功能后 我的字典看起来像

{'1': 2, '2': 1, '5': 2, '.': 2}

我的直方图功能是

def histogram(a):
    d = dict()
    for c in a:
        d[c] = d.get(c,0)+1

    return d

我正在为学校做一个项目,并且已编写了所有内容,但是当我开始执行模式部分并使用非特定int的数字时,我得到了上述返回 如何调整/更改此值以使其接受与键入的字符串完全相同的字符串 Windows 7x64上的Python 2.7

4 个答案:

答案 0 :(得分:1)

在将直方图函数传递给它之前,您可以将每个字符串元素转换为浮点数。

a = ['1','1.5','2.5']

a = [float(i) for i in a]

def histogram(a):
    d = dict()
    for c in a:
        d[c] = d.get(c,0)+1

    return d

print histogram(a)

答案 1 :(得分:0)

列表定义中可能存在错误。运行你的代码

{'1': 1, '1.5': 1, '2.5': 1}

如果我从

更改a的定义
a = ['1','1.5','2.5']

a = '1' '1.5' '2.5'

我得到了你向我们展示的输出。

因此,请仔细检查列表的定义方式。

答案 2 :(得分:0)

您可以使用以下内容:

>>> a = ['1','1.5','2.5']
>>> dict.fromkeys(a, 0)
{'1': 0, '1.5': 0, '2.5': 0}

现在您可以迭代键来设置相应的值。

我使用了以下dict理解来减少我的工作。

>>> {key: float(key)+1 for key in a}
{'1': 2.0, '1.5': 2.5, '2.5': 3.5}

享受:)

答案 3 :(得分:0)

histgram函数可以正常工作。但是,如果你无意中.join()你的列表你的直方图,然后直方图得到的对象。例如...... t = ['1.0','2.0','2.5']s = s.join(t) s将是=='1.02.02.5',直方图将小数计为切片中的值。我的问题是我在调用直方图之前放置了一个.join()。 我对那些浪费任何实时信息的人表示同情。