代码之家  ›  专栏  ›  技术社区  ›  JD2775

基于子字符串的字典计数[重复]

  •  -1
  • JD2775  · 技术社区  · 7 年前

    我试图打开一个文件,遍历每一行,并对每一行中的特定单词进行计数,以添加到字典中。

    From some.email@address.ac.za Sat Jan  5 09:14:16 2008
    From some.email@address.ac.za Sat Jan  5 09:14:16 2008
    From some.email@address.ac.za Fri Jan  5 09:14:16 2008
    From some.email@address.ac.za Wed Jan  5 09:14:16 2008
    From some.email@address.ac.za Tue Jan  5 09:14:16 2008
    From some.email@address.ac.za Sat Jan  5 09:14:16 2008
    From some.email@address.ac.za Sat Jan  5 09:14:16 2008
    From some.email@address.ac.za Sat Jan  5 09:14:16 2008
    

    我要做的是读取文件,遍历每一行,记下一周中的天数,并将其返回到字典中。所以结果会是这样的:

    {'Sat': 5, 'Fri': 1, 'Wed': 1, 'Tue': 1}
    

    有什么想法吗?

    fname = input('Enter the file name: ')
    try:
        fhand = open(fname)
    except:
        print('File cannot be opened:', fname)
        exit()
    
    counts = dict()
    l1 = []
    for line in fhand:
        line = line.split()
        l1.append(line)
    for date in l1:
        for day in date:
            if day[2] not in counts:
                counts[day] = 1
            else:
                counts[day] += 1
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   taurus05    7 年前
    from collections import defaultdict
    fname = input('Enter the file name: ')
    try:
        fhand = open(fname)
    except:
        print('File cannot be opened:', fname)
        exit()
    
    counts = defaultdict(int)
    l1 = []
    for line in fhand:
        line = line.split()
        for word in line:
            if word in ['Sun', 'Mon', 'Tue', 'Wed', 'Thrus', 'Fri', 'Sat']:
                counts[word] += 1
    print(counts)  
    

    阅读每一行并将其拆分为单词后,您可以检查单词是否为日期名称,如果是,则更新对应于该日期的值。