我有一个看起来像这样的csv:
Name;Category;Address
McFood;Fast Food;Street 1
BurgerEmperor;Fast Food;Way 1
BlueFrenchHorn;French;Street 12
PetesPizza;Italian;whatever
SubZero;Fast Food;Highway 6
我想制作一个以类别为键的字典,并以剩余数据作为值的字典列表。所以它看起来像这样:
{'Fast Food' : [{'Name': 'McFood', 'Address': 'Street 1'},
{'Name': 'BurgerEmperor', 'Address': 'Way 1'}],
...],
'French' : [{'Name': 'BlueFrenchHorn', 'Address': 'Street12'}],
...}
(此处缩进以提高可读性)。
我像下面的代码片段一样尝试了一下,但是到那儿我什么也没得到:
import csv
mydict={}
with open ('food.csv', 'r') as csvfile:
#sniff to find the format
fileDialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
#read the CSV file into a dictionary
dictReader = csv.DictReader(csvfile, dialect=fileDialect)
for row in dictReader:
mycategory= row["Category"]
del row("Category")
mydict[mycategory]=row
使用collections.defaultdict
:
import csv
from collections import defaultdict
mydict = defaultdict(list) # <---
with open ('food.csv', 'r') as csvfile:
fileDialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
dictReader = csv.DictReader(csvfile, dialect=fileDialect)
for row in dictReader:
mycategory= row.pop("Category")
mydict[mycategory].append(row) # Will put a list for not-existing key
mydict = dict(mydict) # Convert back to a normal dictionary (optional)
问题内容: 我正在尝试从csv文件创建字典。csv文件的第一列包含唯一键,第二列包含值。csv文件的每一行代表字典中的唯一键,值对。我尝试使用类,但是我只能弄清楚如何为每一行生成一个新的字典。我要一部字典。这是我尝试使用的代码: 当我运行上面的代码时,我得到一个。如何从csv文件创建一个字典? 问题答案: 我相信你正在寻找的语法如下: 或者,对于,你需要:
问题内容: 我需要将列表转换成字典,如下所示。奇数元素具有键,偶数元素具有值。 -> 获得相同结果的更好方法? 添加 似乎在工作 问题答案: dict(x[i:i+2] for i in range(0, len(x), 2))
问题内容: 我想创建一个字典,其值为列表。例如: 如果我做: 我收到一个KeyError,因为d […]不是列表。在这种情况下,我可以在分配a后添加以下代码以初始化字典。 有一个更好的方法吗?可以说,直到进入第二个循环,我才知道需要的键。例如: 然后可以替代 与 处理此问题的最佳方法是什么?理想情况下,追加将“有效”。有什么方法可以表达我想要空列表的字典,即使我第一次创建列表时也不知道每个键? 问
我有一个包含字典作为其元素的列表 我想从dict_1变量中得到这样的输出 帮助我知道在这种情况下我该怎么做。
问题内容: 给定一个像这样的字典: 如何创建一个字典列表,该列表结合了第一个字典键的各种值?我想要的是: 问题答案: 我认为您想要笛卡尔积,而不是排列,在这种情况下可以提供帮助:
问题内容: 我在玩一些python循环。我对使用“ for”循环非常熟悉: 您还可以使用循环创建一个简单列表: 然后我最近在Stack上发现了一种不错的高效循环类型来构建一个列表(这种类型的循环有名称吗?我真的很想知道,以便可以对其进行更好地搜索): 好的,话虽如此,我想进一步讲解最后一种循环,我尝试使用相同的逻辑类型构建python字典: 而不是使用: 我在等号上收到一条错误消息,告诉我这是无效