【问题标题】:Python reading names from a csv file into a dictionary and adding a value 0 for each namePython 将 csv 文件中的名称读取到字典中,并为每个名称添加值 0
【发布时间】:2017-11-08 22:39:01
【问题描述】:

我在 Python 中从玩家姓名的 csv 文件创建字典时遇到问题。以下是我的代码示例:

playerNames = []
with open(player_names) as csvfile
    for row in csv.reader(csvfile)
        playerNames.append(row)

这段代码基本上会从 csv 文件中读取名称并将它们放入一个嵌套列表中,如下所示:[[P1]、[P2]、[P3]、[P4]]

现在我想将这些玩家名称添加到字典中,并为字典中的每个玩家添加一个值 0,所需的结果将如下所示:{P1:0, P2:0, P3 :0, P4:0} 但是,我正在努力做到这一点,非常感谢一些帮助。我还想问是否可以直接将球员姓名读入字典而不是先将他们读入列表?

由于我是使用字典的新手

谢谢,

【问题讨论】:

    标签: python csv dictionary


    【解决方案1】:

    假设每个玩家的名字在输入文件中只出现一次:

    player_dict = {}
    with open('player_names.txt') as players:
        for line in players:
            player_dict[line.strip()]=0
    
    print(player_dict)
    

    输出:

    {'larry': 0, 'tom': 0, 'dick': 0}
    

    【讨论】:

      【解决方案2】:

      playerNames = [] 替换为playerNames = {},将playerNames.append(row) 替换为playerNames[row[0]] = 0。而“添加” 0 并不是一个完全正确的术语:您为每个键分配一个零。

      【讨论】:

        【解决方案3】:

        使用嵌套的名称列表,您可以使用以下内容:

        playerDict = dict.fromkeys([p[0] for p in playerNames, 0])
        

        甚至:

        playerDict = {p[0]:0 for p in playerNames}
        

        不过,我建议您只制作一个名称列表(而不是嵌套列表),方法是仅附加名称并进行以下更改:

        playerNames.append(row[0])
        

        【讨论】:

          猜你喜欢
          • 2022-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-01
          • 2020-02-11
          • 1970-01-01
          • 2020-07-11
          • 2022-01-03
          相关资源
          最近更新 更多