使用Python计算List中的字符串数

时间:2015-06-07 10:52:02

标签: python

我手里拿着一份清单,我想从这份清单中创建词汇。然后,我想显示每个单词并在此列表中计算相同的字符串。

样本列表如下。

    new_list = ['one', 'thus', 'once', 'one', 'count', 'once', 'this', 'thus']

首先,我在下面创建了一个词汇表。

    vocabulary = []
        for i in range (0, len(new_list)):
            if new_list[i] not in vocabulary:
                vocabulary.append(new_list[i])`
    print vocabulary

上述代码的输出是:“count,once,one,this,so。”

我想在列表中显示每个单词的数量,如下所示。 [count] [1],[once] [2],[one] [2],[this] [1],[so] [2]。

为了获得上述结果;我尝试下面的代码。

    matris = []

    for i in range(0,len(new_list)):
        temp = []
        temp.insert(0,new_list.count(new_list[i]))        
        matris.append(temp)

    for x in matris:
        print x

上面的代码只给出了单词的数量。有人可以告诉我如何打印单词的名称和单词的数量,如[一次] [2]格式。

1 个答案:

答案 0 :(得分:6)

使用Counter dict获取单词计数然后迭代.items

from collections import Counter

new_list = ['one', 'thus', 'once', 'one', 'count', 'once', 'this', 'thus']

cn = Counter(new_list)
for k,v in cn.items():
    print("{} appears  {} time(s)".format(k,v))

如果您想要特定输出,可以将元素包装在str.format中:

for k,v in cn.items():
    print("[{}][{}]".format(k,v))

[thus][2]
[count][1]
[one][2]
[once][2]
[this][1]

要将输出从最高计数到最低使用.most_common:

cn = Counter(new_list)
for k,v in cn.most_common():
    print("[{}][{}]".format(k,v))

输出:

[once][2]
[thus][2]
[one][2]
[count][1]
[this][1]

如果您希望数据按字母顺序从最低到最高,从最高到最低进行计数,则需要将密钥-x[1]传递给排序以取消计数从最高到最低排序的计数:

for k, v in sorted(cn.items(), key=lambda x: (-x[1],x[0])):
    print("[{}][{}]".format(k, v))

输出:

[once][2]
[one][2]
[thus][2]
[count][1]
[this][1]