【问题标题】:How do I read a 2 column csv file and create a dictionary?如何读取 2 列 csv 文件并创建字典?
【发布时间】:2017-03-06 18:56:10
【问题描述】:

例如给定以下csv

ID, type
1 , A
2 , B
3 , C

它应该生成一个看起来像这样的字典

{'1':A, '2':B, '3':C}

这是我目前所拥有的,但它将整个列关联到 1 个字典中

import csv

reader = csv.DictReader(open('TIS_annotation.csv'))
result = {}

for row in reader:
    for column, value in row.iteritems():
        result.setdefault(column, []).append(value)
print result

【问题讨论】:

  • 你有重复的 ID 吗?
  • @PadraicCunningham 不,谢天谢地哈哈

标签: python python-2.7 csv dictionary


【解决方案1】:

当您遍历reader 中的每个row 时,row 变量包含了在字典中创建新条目所需的所有信息。你可以简单地写

for row in reader:
    result[row['ID']] = row[' type']

制作你想要的字典。

【讨论】:

    【解决方案2】:

    比你想象的要简单:

    import csv
    
    with open('TIS_annotation.csv') as f:
        next(f)  # Skip the header
        reader = csv.reader(f, skipinitialspace=True)
        result = dict(reader)
        print result
    

    输出:

    {'1 ': 'A', '3 ': 'C', '2 ': 'B'}
    

    基本上,reader 产生一系列行,每行有两个元素,将其输入到dict 中,您就完成了。

    【讨论】:

    【解决方案3】:

    另一种方法是创建一个元组并将元组转换为字典,甚至适用于 txt 文件。

    for row in reader:
        ID = row[0] 
        data_type = row[1]
        myTuples.append(tuple([ID, data_type]))
    
    result = dict(myTuples)
    print result
    

    导致:

    {'1 ': ' A', '3 ': ' C', '2 ': ' B', 'ID': ' type'}

    您可以在读取数据/csv 时跳过标题或第一行,因此 'ID': ' type' 不会在字典中。

    最短的方式跳过第一行并附加行的位置而不创建 IDtype 变量:

    next(f) #for skipping first row in the file
    myTuples = [] #store tuples from col1 and col2
    for row in reader:
        myTuples.append(tuple([row[0], row[1]])) #append col1 and col 2 to myTuples
    
    result = dict(myTuples)
    print result
    

    结果:

    {'1':'A','3':'C','2':'B'}

    【讨论】:

      猜你喜欢
      • 2015-10-01
      • 2013-03-02
      • 1970-01-01
      • 2021-02-19
      • 2018-02-01
      • 2020-09-29
      • 2015-09-16
      相关资源
      最近更新 更多