Python 我的str(float)在直方图字典转换时被破坏,我如何停止?
当尝试对数字列表(str格式)进行柱状图分析时,我的所有数字都会被分解 比如说Python 我的str(float)在直方图字典转换时被破坏,我如何停止?,python,dictionary,histogram,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 我正在为学校做一个项目,把所有的东西都编码进去,但是当我开始
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
我正在为学校做一个项目,把所有的东西都编码进去,但是当我开始做模式部分时,我使用的数字不是特别整数,我得到了上面的结果
我如何调整/更改它,使其完全按照键入的字符串接受字符串
Python2.7在Windows 7x64上,在将每个字符串元素传递给直方图函数之前,可以将其转换为浮点
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': 1, '1.5': 1, '2.5': 1}
如果我将a
的定义从
a = ['1','1.5','2.5']
到
我得到了你给我们看的结果
因此,请仔细检查您的列表是如何定义的。您可以使用以下内容:
>>> a = ['1','1.5','2.5']
>>> dict.fromkeys(a, 0)
{'1': 0, '1.5': 0, '2.5': 0}
现在您可以迭代键来设置相应的值
我使用了下面的听写理解来减少我的工作量
>>> {key: float(key)+1 for key in a}
{'1': 2.0, '1.5': 2.5, '2.5': 3.5}
享受:)histgram函数按编写时的方式工作。但是,如果您无意中选择了.join()将您的直方图与生成的对象进行直方图列出。例如<代码>t=['1.0'、'2.0'、'2.5']和
s=s.join(t)
s随后将=='1.02.02.5',直方图将小数作为切片中的值进行计数。我的问题是在调用直方图之前放置了一个.join()。
我向任何在这方面浪费时间的人致歉。Ubuntu12.04上的python 2.7我无法复制问题OSX 10.7无法复制问题。。。在原始代码中是否有额外的循环,使您通过字符串中的每个字符进行循环?。。。因为结果有2x1,1x2,2x5。2x'。。。这是一个正确的“字符串”历史记录mok,让我试试浮点转换,看看会发生什么,我在原版中只有一行。。。t=list(a),但我最终没有使用它,而是删除了它,除了直方图函数保持原样之外,它对我输入的任何列表都有效,无论是str还是int,只是当它们是字符串时它打破了浮点数。好的,再多一点信息,我的程序接受输入,执行函数调用以确保输入是一个数字(根据输入返回int或float),创建一个返回列表,直到完成为止,然后您可以将其设置为平均值、中值或列表模式(每个都是一个单独的函数调用。平均值和中值工作正常,并相应地返回整数或浮点值。当我进入模式时,我的模式函数对列表进行排序,将其转换回str,然后函数调用直方图,这是当我得到损坏的浮点值时。然后它构建一个反向字典,列出键,对新列表进行排序并打印模式。我只在程序中得到损坏的浮点值,而不是当我在shell中运行Stu编写的直方图时。所以基本上我取一个str,将其转换为int或float,列出这些,然后再转换回str,然后再转换为直方图。很抱歉所有这些帖子,在shell中玩过之后,我发现我的问题是什么,它不在直方图中。我的pr当我尝试将int/float列表转换回str时会出现问题。因此,我必须稍微调整我的程序以适应这种情况。我给你的列表不是我的程序实际发送到直方图的列表。它实际上发送了一个字符串int列表。所以,在我重写我的大部分程序之前,有没有简单的方法将它们转换为str没有丢失小数?很高兴你把它整理好了!更新你的问题来描述问题是什么以及你是如何解决的。我忘了向下滚动,没有看到这些帖子。这是我确定的,我的第一个列表是从str转换为float或int(检查长度,然后是int(输入)或float(输入)的输入并返回int或float,然后生成这些的列表。直方图需要str,所以我尝试将列表转换回str,这就是问题发生的时候。a=[str(n)for n in a]将上面的列表返回为['1','1','2']。因此,要么我不需要在列表之前转换,要么找到更好的方法转换回strneverind,我的问题就在某个模糊的地方。join语句我在我的程序中没有注意到。P.S.感谢大家试图帮助我。
>>> {key: float(key)+1 for key in a}
{'1': 2.0, '1.5': 2.5, '2.5': 3.5}