如何更改列表中每个元组的第二个组件?

时间:2014-05-20 03:15:11

标签: python

所以我有一个元组列表,计算一个单词在文本中出现的次数[('cat', 1), ('dog', 6)]如何获得一个新的元组列表,其中1和6更改为相对于总数的出现频率字数?

预期产出:

[('cat', 14.2%), ('dog', 85.7%)]

3 个答案:

答案 0 :(得分:1)

也许像

[(w, n/sum(x[1] for x in words)) for w, n in words]

效率留给读者作为练习。

答案 1 :(得分:0)

您可以按照以下方式执行此操作:

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)]

答案 2 :(得分:-2)

您可以考虑使用dict类型:

[{"cat":1},{"dog":6}]

here something to read about dicts