当尝试对数字列表进行直方图编码时(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
答案 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()。
我对那些浪费任何实时信息的人表示同情。