Переупорядочить поля в Python - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь, чтобы моя программа 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'}

Могу ли я узнать, как я могу это сделать? Большое спасибо!

Ответы [ 2 ]

1 голос
/ 13 апреля 2020
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')})
0 голосов
/ 13 апреля 2020

Вы можете использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...