【问题标题】:How to read text file and group values that share the same key如何读取共享相同键的文本文件和组值
【发布时间】:2019-02-02 04:53:31
【问题描述】:

我需要读取这个文件 num.txt 文件并将它们组合在一起,无论它们是否使用像 d {} 这样的字典共享相同的键,而不是使用 defaultdict

我需要输出: {'0': {'5','1','6','2'}, '4': {'3'}, '9': {'12','11','10'} , '6': {'4'}, '5': {'4','3'}, '11': {'12'}, '7':{'8'}}

0 5
4 3
0 1
9 12
6 4
5 4
0 2
11 12
9 10
0 6
7 8
9 11
5 3

【问题讨论】:

    标签: python python-3.x dictionary


    【解决方案1】:

    使用collections.defaultdict:

    from collections import defaultdict
    
    d = defaultdict(list)
    with open('num.txt') as f:
        for line in f:
            key, value = line.strip().split()
            if key in d:
                d[key].append(value)
            else:
                d[key] = [value]
    
    print(d)
    
    # defaultdict(<class 'list'>, {'0': ['5', '1', '2', '6'], 
    #                              '4': ['3'],
    #                              '9': ['12', '10', '11'], 
    #                              '6': ['4'], 
    #                              '5': ['4', '3'],
    #.                             '11': ['12'],
    #                              '7': ['8']})
    

    【讨论】:

    • 有没有办法在不使用 defaultdict 的情况下做到这一点?就像使用 d{}
    • defaultdict 在执行这些任务时的平均性能优于 dict,您只需使用 dict(d)d 转回 dict 即可
    【解决方案2】:

    您也可以使用csvdefaultdict 模块。

    from collections import defaultdict
    import csv
    
    d = defaultdict(set)
    with open('filename.txt', 'r') as f:
        r = csv.reader(f, delimiter=' ')
        for k, v in r: d[k].add(v)
    d = dict(d)
    #{'0': {'5','1','6','2'}, '4': {'3'}, '9': {'12','11','10'}, '6': {'4'}, '5': {'4','3'}, '11': {'12'}, '7':{'8'}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多