如何使用python中的特定键将CSV文件添加到字典?

时间:2015-04-15 19:47:46

标签: python csv dictionary

我用谷歌搜索并搜索这个网站,但过去的问题对我没有帮助。我想在python中将一个复杂的CSV文件添加到字典中。该文件有六列。

0   0   1   A   PAID    Gave money to
0   5   5   A   CRASH   Stock market calamity
0   11  10  A   BARD    Singing poet

这是一款填字游戏。每列对应于游戏中的值。以第二行为例:

0==y axis on crossword grid
5== x axis on crossword grid
5== the box number on crossword grid
A== Direction on crossword grid (across)
CRASH== the word to be guessed.
Stock market calamity== the crossword clue.

我想将所有这些分配到字典中,让它称之为wordDict,然后将wordDict放入"大字典",称为拼图,使用该字作为键名。

我这是手工制作的。我无法像这样做整个文件。这太繁琐了。 CSV文件中有84行。我想使用for循环来完成这项工作,但不知道我的教科书没有说明这是如何完成的。

请记住,我一次只读取一行中的CSV文件并删除换行符

这是我如何像教科书一样手动完成的:

wordDict['y']='0'
wordDict['x']='5'
wordDict['box']='5'
wordDict['direction']='A'
wordDict['word']='CRASH'
wordDict['clue']='Stock market calamity'
puzzle['CRASH']='wordDict'

有没有办法像这样循环整个过程?

1 个答案:

答案 0 :(得分:2)

假设您的输入文件是以制表符分隔的,您可以在几行代码中执行此操作:

import csv    

with open(filename) as file:
    reader = csv.DictReader(
        file,
        delimiter='\t',
        fieldnames=['y', 'x', 'box', 'direction', 'word', 'clue'],
    )
    puzzle = {dct['word']: dct for dct in reader}

这给了我:

>>> import pprint
>>> pprint.pprint(puzzle)
{'BARD': {'box': '10',
          'clue': 'Singing poet',
          'direction': 'A',
          'word': 'BARD',
          'x': '11',
          'y': '0'},
 'CRASH': {'box': '5',
           'clue': 'Stock market calamity',
           'direction': 'A',
           'word': 'CRASH',
           'x': '5',
           'y': '0'},
 'PAID': {'box': '1',
          'clue': 'Gave money to',
          'direction': 'A',
          'word': 'PAID',
          'x': '0',
          'y': '0'}}

请参阅csv.DictReader上的文档,该文档完成了大部分工作。