Python 元组、集合和字典 实例

def main():
    # Prompt the user to enter a file
    filename = raw_input("Enter a filename: ").strip()
    infile = open(filename, "r") # Open the file

    wordCounts = {} # Create an empty dictionary to count words
    for line in infile:
        processLine(line.lower(), wordCounts)

    pairs = list(wordCounts.items()) # Get pairs from the dictionary

    items = [[x, y] for (y, x) in pairs] # Reverse pairs in the list

    items.sort() # sort pairs in items

    for i in range(len(items) - 1, len(items) - 11, -1):
        print(items[i][1] + "\t" + str(items[i][0]))

# Count each word in the line
def processLine(line, wordCounts):
    line = replacePunctuations(line) # Replace punctuation with space
    words = line.split()
    for word in words:
        if word in wordCounts:
            wordCounts[word] += 1
        else:
            wordCounts[word] =1

# Replace punctuation in the line with space
def replacePunctuations(line):
    for ch in line:
        if ch in "~@#$%^&*()_-+=~<>?/,.;:!{}[]|'\"":
            line = line.replace(ch, " ")

    return line

main()

编写程序统计一个文本文件中单词的出现次数,并将出现次数最多的单词和它们的出现次数按降序显示。字典对象没有sort方法,那么如何对它进行排序呢?将字典的每一对放入一个列表中,然后对这个列表排序。如果使用sort方法对这个列表排序,程序将按每对的第一个元素进行排序,但是我们对出现次数(每对的第二个元素)进行排序。因此,需要利用倒置每一对来创建一个新的列表,然后利用sort方法。
—摘自《Python 程序语言设计》 李娜译

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值