python-3.x - 将 3 列 csv 读入嵌套字典
问题描述
我一直在关注几个阅读 csv 文件的例子。我有一个 /some/path/file.csv 作为
type,id,password
db,db_admin,admin123
db,db_user,user123
mw,mw_admin,admin456
mw,mw_user,user456
fe,fe_admin,admin789
fe,fe_user,user789
代码:
import csv
from collections import defaultdict
types = defaultdict(list)
with open(r'/some/path/file.csv', 'r') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
types[row['type']].append({row['id'], row['password']})
print(types)
输出:
{'db': [{'db_admin': 'admin123', 'db_user': 'user123'}],
'mw': [{'mw_admin': 'admin456', 'mw_user': 'user456'}],
'fe': [{'fe_admin': 'admin789', 'fe_user': 'user789'}]}
我希望以这种方式将其传递给一个方法。以及如何在循环中迭代这些并将 'db' 和 {'db_admin': 'admin123', 'db_user': 'user123'} 传递给方法。
{'db': {'db_admin': 'admin123', 'db_user': 'user123'},
'mw': {'mw_admin': 'admin456', 'mw_user': 'user456'},
'fe': {'fe_admin': 'admin789', 'fe_user': 'user789'}}
解决方案
您可以为csv 文件中setdefault
具有相同内容的所有行使用和创建共享条目:type
import csv
types = {}
with open('file.csv', 'r') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
types.setdefault(row['type'], {})[row['id']] = row['password']
print(types)
输出
{'db': {'db_admin': 'admin123', 'db_user': 'user123'}, 'mw': {'mw_admin': 'admin456', 'mw_user': 'user456'}, 'fe': {'fe_admin': 'admin789', 'fe_user': 'user789'}}
推荐阅读
- reactjs - 赛普拉斯没有检测来自 cy.route() 的路由
- javascript - 在 plotly 模板中添加多个 csv 文件
- reactjs - 如何显示蚂蚁设计时间选择器未来时间
- javascript - 如何将数组复制到功能状态?
- css - Quasar 表根据一个单元格中的值更改整行的样式
- flutter - Flutter 共享首选项与原生共享首选项
- javascript - 如何在特定位置存储或上传音频文件?
- android - 如何为同一个 xml 属性使用 2 个不同的值.....有可能吗?
- python - python:int子类的子类
- swift - 从 WKWebView 保存 PDF