python - 使用 for 循环创建嵌套字典
问题描述
我有一个 csv 文件,我试图创建一个嵌套字典,如下所示:
contacts = {"Tom": {"name": "Tom Techie",
"phone": "123 123546",
"email": "tom@tom.fi",
"skype": "skypenick"},
"Mike": {"name": "Mike Mechanic",
"phone": "000 123546",
"email": "mike@mike.fi",
"skype": "-Mike-M-"}}
ETC
这就是我写的:
file = open("csv","r")
d = {}
for i in file:
f = i.strip()
x = f.split(";")
if x[4] != "":
d.update({x[0] : {"name":x[1],
"phone":x[2],
"email":x[3],
"skype":x[4]}})
else:
d.update ({x[0] : {"name": x[1],
"phone": x[2],
"email": x[3]}})
然而,当它们应该像上面所说的那样时,它将 dict 打印为普通字典,并将更新作为键。
编辑: csv 的第一行:
key;name;phone;email;skype
Tom;Tom Techie;123 123546;tom@tom.fi;skypenick
Mike;Mike Mechanic;000 123456;mike@mike.fi;-Mike-M-
Archie;Archie Architect;050 987654;archie@archie
解决方案
您可以使用pd.read_csv()
和to_dict()
:
import pandas as pd
contacts = pd.read_csv('test.csv', sep=';').set_index('key').to_dict(orient='index')
产量:
{'Tom': {'name': 'Tom Techie', 'phone': '123 123546', 'email': 'tom@tom.fi', 'skype': 'skypenick'}, 'Mike': {'name': 'Mike Mechanic', 'phone': '000 123456', 'email': 'mike@mike.fi', 'skype': '-Mike-M-'}, 'Archie': {'name': 'Archie Architect', 'phone': '050 987654', 'email': 'archie@archie', 'skype': nan}}
推荐阅读
- python - 有没有办法在后台 Windows 终端中运行一个 jumpmotion python 脚本?
- uwp - 运行批处理脚本时未创建快捷方式
- scala - 类型系统示例的 Scala 语法/语法?
- lua - 如何在 timer.performWithDelay 之后运行代码?- 电晕SDK
- c++ - 介子:将包含目录添加到位于构建文件夹中的目标
- python - python pandas选择匹配一个条件的行并写入一个新的csv文件
- c# - 通过VBA执行批处理文件写入文件不起作用
- c# - 是否有使用 libusbk C# 绑定的指南?
- spring - 如果出现异常,如何覆盖 Spring Batch CompositeItemWriter 管理委托编写者的事务?
- sql - Tableau 中用于排序前 10 名的语法错误