python - 从 csv 创建嵌套字典
问题描述
我在 csv 中有一些数据,打开时看起来像这样:
Example Data
['', 'Name', 'Phone', 'Address', 'City', 'Country', 'Email']
['1', 'Bob Myers', '410-504-5887', '12334 Hamilton Way', 'Toronto', 'Canada', 'bob@gmail.com']
['2', 'Carlton James', '455-323-8479', '1234 James Rd', 'New York', 'USA', 'carlton@example.com']
['3', 'Frank Wright', '744-521-9874', '567 Travis St', 'Boston', 'USA', 'fw4322@yahoo.com']
我想创建一个嵌套字典,在其中获取 '' 中的整数并将其用作每个嵌套字典的键。我发现了一些类似的问题并尝试了:
import csv
f = csv.DictReader(open('data.csv'))
result = {}
for row in f:
key = row.pop('')
result[key] = row
print(result)
这产生了类似的东西:
{'1': {'Name': 'Bob Myers', 'Phone': '410-504-5887', 'Address': '12334 Hamilton Way', 'City': 'Toronto',
'Country': 'Canada', 'Email': 'bob@gmail.com'}...
我在我的代码中进行了哪些更改以使我的数据看起来像这样(没有熊猫):
my_dict = {{'Name': {1: 'Bob Myers', 2: 'Carlton James', 3: 'Frank Wright'}},
{'Phone': {1: '410-504-5887', 2: '455-323-8479', 3: '744-521-9874'}},
{'Address': {1: '12334 Hamilton Way', 2: '1234 James Rd', 3: '567 Travis St'}},
{'City': {1: 'Toronto', 2: 'New York', 3: 'Boston'}},
{'Country': {1: 'Canada', 2: 'USA', 3: 'USA'}},
{'Email': {1: 'bob@gmail.com', 2: 'carlton@example.com', 3: 'fw4322@yahoo.com'}}
}
解决方案
最好的方法是(ab)使用 Pandas ;-)
import pandas as pd
d = pd.DataFrame([result]).to_dict()
print(d)
对于测试用例result
:
{'1': {'Name': 'Bob Myers', 'Phone': '410-504-5887', 'Address': '12334 Hamilton Way', 'City': 'Toronto',
'Country': 'Canada', 'Email': 'bob@gmail.com'}
输出如下:
{'Name': {0: 'Bob Myers'}, 'Phone': {0: '410-504-5887'}, 'Address': {0: '12334 Hamilton Way'}, 'City': {0: 'Toronto'}, 'Country': {0: 'Canada'}, 'Email': {0: 'bob@gmail.com'}}
推荐阅读
- python - 保存空列表时python搁置错误
- z3 - z3py 中函数“from_file()”的问题
- haskell - 在 Visual Studio Code 的 Haskell 中找不到模块“Crypto.Hash.SHA1”
- c - setvbuf 的哪些参数执行与 setbuf(stdin, NULL) 相同的操作?
- javascript - 各种用途的评估 JavaScript
- python-3.x - 如何在“for”循环中的每个错字旁边添加正确的信息?
- windows - 仅限 Windows 10 专业版标准用户帐户
- android - 我在这个 kotlin 类中错误地使用了 sqlite
- android - 如何使用图形范围内的 ViewModel 测试片段
- c# - 颜色自定义标题 DataGrid