我从csv引入了一个词典:{'0ca6f08e': '1111', '89b2e9ab': '2222', '0c2e5b6d': '3333', '07287d73': '4444'}
需要的是:
{'id' :'0ca6f08e', 'thing': '1111'}, {'id': '89b2e9ab', 'thing': '2222'}, {'id: '0c2e5b6d', 'thing': '3333'}
这是为了给dict带来秩序,所以我可以稍后以理智的方式操作。我不清楚如何采取像csv:
0ca6f08e,1111
89b2e9ab,2222
0c2e5b6d,3333
注入理智和以后使用的钥匙。
答案 0 :(得分:2)
我们可以使用列表理解来解决这个问题:
>>> original = {'0ca6f08e': '1111', '89b2e9ab': '2222', '0c2e5b6d': '3333', '07287d73': '4444'}
>>> parsed = [{'id': key, 'thing': value} for key, value in a.items()]
>>> parsed
[{'thing': '1111', 'id': '0ca6f08e'}, {'thing': '2222', 'id': '89b2e9ab'}, {'thing': '3333', 'id': '0c2e5b6d'}, {'thing'
: '4444', 'id': '07287d73'}]
我们基本上抓住原始字典中的每个键和相应的值,并将其转换为字典列表。
请注意,使用dict的items
方法直接获取键和值可能会更简洁,并循环显示:
>>> original.items()
[('0ca6f08e', '1111'), ('89b2e9ab', '2222'), ('0c2e5b6d', '3333'), ('07287d73', '4444')]
答案 1 :(得分:1)
如果您是第一次阅读该文件,可以按以下方式修复结果:
with open('foo.csv') as f:
for line in f:
lines = [{'id': a, 'thing': b} for a,b in line.split(',')]
如果您想修复字典中的结果:
lines = [{'id': a, 'thing': b} for a,b in big_dict.iteritems()]
答案 2 :(得分:1)
您可以使用csv模块的DictReader来读取csv文件。
以下是一个例子:
import csv
with open('example.csv') as csvfile:
for csv_dict in csv.DictReader(csvfile, fieldnames=["id", "thing"])
# Now you can use the csv_dict as a normal dictionary
print csv_dict["id"]