0

例如,当尝试对数字列表(以 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

4 回答 4

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)
于 2013-04-04T08:29:48.760 回答
0

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

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

如果我改变afrom的定义

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

a = '1' '1.5' '2.5'

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

因此,请仔细检查您的列表是如何定义的。

于 2013-04-04T08:40:08.317 回答
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}

请享用 :)

于 2013-04-04T10:10:09.637 回答
0

histgram 函数确实按照它的编写方式工作。但是,如果您无意中 .join() 列出了您的直方图,则使用直方图生成的对象。例如......t = ['1.0','2.0','2.5']然后 s = s.join(t)s 将是 == '1.02.02.5' 并且直方图会将小数作为切片中的值计算。我的问题是我在调用直方图之前放置了一个 .join() 。我向在此浪费任何实时时间的任何人表示歉意。

于 2013-04-11T03:52:38.657 回答