因此,我有一个元组列表,统计一个文本在文本中出现的次数[('cat', 1), ('dog', 6)]
如何获得一个新的元组列表,其中1和6被更改为相对于总字数的出现频率?如何更改列表中每个元组的第二个组件?
预期输出:
[('cat', 14.2%), ('dog', 85.7%)]
因此,我有一个元组列表,统计一个文本在文本中出现的次数[('cat', 1), ('dog', 6)]
如何获得一个新的元组列表,其中1和6被更改为相对于总字数的出现频率?如何更改列表中每个元组的第二个组件?
预期输出:
[('cat', 14.2%), ('dog', 85.7%)]
你能做到这一点,如下所示:
a = [('cat', 1), ('dog', 6)]
x = float(sum(i[1] for i in a))/100 #in python3, you can just do: x = sum(i[1] for i in a)/100
a = [(i,j/x) for i,j in a]
>>> print a
[('cat', 14.285714285714285), ('dog', 85.714285714285708)]
也许类似
[(w, n/sum(x[1] for x in words)) for w, n in words]
效率就留给读者自己练习。
您仍然需要 “'float'它”(假设python2):HTTP:// REPL。 it/Swv – sshashank124
@ sshashank124:如果您使用的是现代版本的Python,请不要使用它(请参阅[PEP 238](http://legacy.python.org/dev/peps/pep-0238/))。 –
这是如何回答这个问题的? –
这看起来更像是他想要的东西,而不是元组列表。他改变了他的问题。它之前是不同的 – Hans
好吗更新预期输出 – user3591815