python - Python csv(两列:键/值)到字典
问题描述
是否可以将 csv 文件中的数据读入字典,使得第一列是键,第二列。
例如,我有一个 csv 文件
code msg
123456 Lorem ipsum dolor sit amet, consectetur adipiscing elit
345981 sed do eiusmo ut labore, et dolore magna aliqua;
459827 ullamco, laboris nisi ut aliquip ex ea commodo consequat.
490023 veniam, quis nostrud exercitation
345612 mollit anim id est laborum.
code 表示键,msg 表示与每个代码关联的值。
import csv
with open('test.csv') as f:
reader = csv.reader(f)
mydict = {rows[0]:rows[1:] for rows in reader}
print(mydict)
x = mydict.get("123456")
print(x)
结果:
{'code;msg': [], '123456;Lorem ipsum dolor sit amet': [' consectetur adipiscing elit'], '345981;"sed do eiusmo ut labore': [' et dolore magna aliqua;"'], '459827;ullamco': [' laboris nisi ut aliquip ex ea commodo consequat.'], '490023;veniam': [' quis nostrud exercitation'], '345612;mollit anim id est laborum.': []}
None
我想搜索与每个键关联的值。
EG:当我写:
key= "123456"
value=mydict.get(key)
print(key + "has this value : " + value)
我会得到一个输出:
>>> The key 123456 has this value :Lorem ipsum dolor sit amet, consectetur adipiscing elit
解决方案
没有任何导入,您可以使用:
with open('test.csv') as f:
csv = f.readlines()
d = {}
for line in csv[1:]: # Loop csv lines skipping first line csv[1:] (headers)
m = line.split()
if len(m) > 1:
d[m[0]] = " ".join(m[1:])
print(d)
输出:
{'123456': 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', '345981': 'sed do eiusmo ut labore, et dolore magna aliqua;', '459827': 'ullamco, laboris nisi ut aliquip ex ea commodo consequat.', '490023': 'veniam, quis nostrud exercitation', '345612': 'mollit anim id est laborum.'}
笔记:
要搜索
key
,我通常使用:if '123456' in d: print(d['123456']) # Lorem ipsum dolor sit amet, consectetur adipiscing elit
打印字典
keys
和values
print(d.keys(), d.values()) # dict_keys(['123456', '345981', '459827', '490023', '345612']) # dict_values(['Lorem ipsum dolor sit amet, consectetur adipiscing elit', 'sed do eiusmo ut labore, et dolore magna aliqua;', 'ullamco, laboris nisi ut aliquip ex ea commodo consequat.', 'veniam, quis nostrud exercitation', 'mollit anim id est laborum.'])
推荐阅读
- typescript - TypeScript:可以在数组中声明特定的序列类型吗?
- java - 怎么解决onclick无法实现fragment跳转?
- c# - 如何用给定输入中的值替换给定的电子邮件地址?
- javascript - Redux 根据窗口宽度改变状态
- assembly - 为什么我不能使用寄存器访问 as86 中的内存
- javascript - 禁用无穷大规则的科学记数法
- node.js - Docker 容器无法相互访问。获得 CONNECTION_REFUSED
- javascript - Django Channels WebSocket 参数
- opencv - solvePnP 可以处理图像框架之外的点吗?
- elf - 了解 ELF TBSS 和 TDATA 部分加载