Python 使用DictReader从CSV读取到列表中

Python 使用DictReader从CSV读取到列表中,python,csv,dictionary,python-3.6,Python,Csv,Dictionary,Python 3.6,守则: def import_csv(): with open('list.csv') as csvfile: reader = csv.DictReader(csvfile,delimiter=",") print(list(reader)) 输出为: [OrderedDict([('Anrede', 'asfsf'), ('Vorname', 'dsfsdfsd'), ('Nachname', 'sdfsdfdsf'), ('Strasse', '

守则:

def import_csv():

    with open('list.csv') as csvfile:
        reader = csv.DictReader(csvfile,delimiter=",")
        print(list(reader))
输出为:

[OrderedDict([('Anrede', 'asfsf'), ('Vorname', 'dsfsdfsd'), ('Nachname', 'sdfsdfdsf'), ('Strasse', 'sdfsdfsd'), ('Hausnummer', 'sdf'), ('PLZ', 'dsf'), ('Stadt', 'dsf'), ('Telefon1', 'dsf'), ('Telefon2', 'sdf'), ('E-Mail', 'sdf')]), OrderedDict([('Anrede', '123123'), ('Vorname', '213213'), ('Nachname', '213123'), ('Strasse', '123213'), ('Hausnummer', '12312'), ('PLZ', '21323'), ('Stadt', '23'), ('Telefon1', '23'), ('Telefon2', '23'), ('E-Mail', '2')])]
我的CSV文件看起来像:

Anrede、Vorname、Nachname、Strasse、Hausnumer、PLZ、Statt、Telefon1、Telefon2、电子邮件
asfsf,dsfsdfsd,sdfsdfdsf,sdfsdfsd,sdf,dsf,dsf,dsf,sdf,sdf
123123,213213,213123,123213,12312,21323,23,23,23,2
我找不到解决方案,为什么我的输出与此问题相同:


我想以
dict
的形式读取这些行,并将标题信息作为键,然后将它们一起保存为一个列表。

这是因为它们更改了python 3.6中的
csv.DictReader
的实现。这个新实现的有趣之处在于,键的顺序与头一样,并且由
OrderedDict
对象保证(即使在Python 3.6中,所有dict都是有序的,但这被视为实现细节,因此
csv
模块不依赖于此)

以前您的代码返回一个字典列表,现在它返回一个列表或有序字典,这是一种专门化

您担心数据的表示方式,但它可以正常工作,它们仍然是字典(例如,尝试
print(list(reader)[0]['Anrede'])

为了让您放心,请尝试转换为标准字典:

print([dict(d) for d in reader])
你会得到

[{'Anrede':'asfsf','Vorname':'dsfsdfsd','Nachname':'sdfsdfdsf','Strasse':'sdfsdfsd','hausnumer':'sdf','PLZ':'dsf','statt':'dsf','Telefon1':'dsf','Telefon2':'sdf','E-Mail':'sdf'],{'Anrede':'123123','Vorname':'213213','Nachname':'213123','Strasse':'123213','Hausnumer':'12312','PLZ':'21323','Stadt':'23','Telefon1':'23','Telefon2':'23','E-Mail':'2']


就像你在早期版本的python上运行代码一样。

在3.6版本之前,DictReader生成了普通的dict。这在3.6版本上发生了变化。这就是为什么你放的链接没有得到相同的结果。使用早期版本来获取dict。或者坚持使用3.6-OrderedDict也是很好的数据结构

在版本3.6中更改:返回的行现在是OrderedDict类型


我得到了
[{'Anrede':'asfsf','statt':'dsf','Telefon1':'dsf','E-Mail':'sdf','Strasse':'sdfsdfsd','PLZ':'dsf','Nachname':'sdfsdfdsf','Hausnummer':'sdf','Telefon2':'sdf','Vorname':'dsfsdfsd',{'Anrede':'123123','Stadt':'23','Telefon1':'23','E-Mail':'2','Strasse':'123213','PLZ':'21323','Nachname':'213123','Hausnumer':'12312','Telefon2':'23','Vorname':'213213'}正如预期的那样。
你的python版本是什么?3.6.3是我的版本