【问题标题】:Rearrange Fields in Python在 Python 中重新排列字段
【发布时间】:2020-07-26 03:03:22
【问题描述】:

我正在尝试让我的 python 程序在列表中显示员工、薪水和部门的名称。这是我的 csv 文件:

Name, Salary, Department
Pika Chu, 5000, Pokemon
Peter Parker, 10000, Friendly Neighborhood Spiderman
Bruce Lee, 25000, Kung Fu Master
Trevor Phillips, 30000, Grand Theft Auto
Willy Wonka, 1000000, Chocolatier
Mario, 84000, Plumber
Sonic, 20000, Runner

这是我的代码:


#!/usr/bin/env python3
import csv
import os



def read_employees(file):


 open(file, 'r')


 csv.register_dialect('stfDialect', skipinitialspace=True, strict=True)
 staffFile = csv.DictReader(open(file), dialect = 'stfDialect')

 staffList = []
 for data in staffFile:
     staffList.append(data)
 return staffList

staffList = read_employees("Staff.csv")
print(staffList)

输出是这样的:

{'Name': 'Pika Chu', 'Salary': '5000', 'Department': 'Pokemon'}

但我希望输出显示这样的数据:

{'Department': 'Pokemon', 'Salary': '5000', 'Name': 'Pika Chu'}

我可以知道我怎样才能做到这一点吗? 非常感谢!

【问题讨论】:

    标签: python file csv dictionary


    【解决方案1】:
    import csv
    import os
    def read_employees(file):
      csv.register_dialect('stfDialect', skipinitialspace=True, strict=True)
      with open(file, r') as f
        staffFile = csv.DictReader(f, dialect = 'stfDialect')
      return list(staffFile)
    
    staffList = read_employees("Staff.csv")
    for e in staffList:
      print({k: e[k] for k in ('Department', 'Salary', 'Name')})
    

    【讨论】:

    • 谢谢,但我使用的是 python 3。
    • Python 3.6 是 Python 3 的一个版本。如果您可以使用 3.6 或更高版本,这就是您想要的解决方案。早期版本您使用更慢且更复杂的 OrderedDict。
    • 感谢您的帮助,但我收到此错误:列表索引必须是整数或切片,而不是 str。
    • 嗯,这只是print 部分。现在我展示整个代码(对您的原始代码进行了一些改进)。
    【解决方案2】:

    你可以使用OrderedDict:

     from collections import OrderedDict
    
     staffList = []
     fields_order = ["Department", "Salary", "Name"]
     for data in staffFile:
         o_d = OrderedDict()
         for field in fields_order:
            o_d[field] = data["field"]
         staffList.append(o_d)
     return staffList
    

    【讨论】:

      猜你喜欢
      • 2022-12-12
      • 2016-12-30
      • 1970-01-01
      • 2020-12-28
      • 2020-12-06
      • 2020-02-19
      • 2019-04-23
      • 2020-02-18
      • 2021-03-17
      相关资源
      最近更新 更多