python - 将文件转换为字典列表
问题描述
我的文件格式如下:
MN_N3 net48 sout VSS VBN lvtnfet l=0.116u nf=1 M=1 nfin=4
MN_N10 net082 net48 VSS VBN lvtnfet l=0.116u nf=1 M=1 nfin=4
MN_N11 nclk_net CK VSS VBN lvtnfet l=0.068u nf=1 M=1 nfin=4
MN_N9 SO SE net082 VBN lvtnfet l=0.116u nf=1 M=1 nfin=4
我想把它读成字典列表,这样每一行就形成一个像这样的字典
{'name': 'MN_N3' , 'source': 'net48' , 'gate': 'sout', 'Drain':'VSS'}
我试过这个:
d{'name':line.split(' ')[0], 'source':line.split(' ')[1], 'gate':line.split(' ')[2], 'drain':line.split(' ')[3]}
这给了我:
File "task2.py", line 24
d{'name':line.split(' ')[0], 'source':line.split(' ')[1], 'gate':line.split(' ')[2], 'drain':line.split(' ')[3]}
^
SyntaxError: invalid syntax
我该怎么做/修复这个错误?
解决方案
这是一种更易于管理的方法。当您的需求发生变化时,更新此代码会容易得多,比如lvtnfet
也添加到字典中。
# Or file.readlines()
ls = ['MN_N3 net48 sout VSS VBN lvtnfet l=0.116u nf=1 M=1 nfin=4',
'MN_N10 net082 net48 VSS VBN lvtnfet l=0.116u nf=1 M=1 nfin=4',
'MN_N11 nclk_net CK VSS VBN lvtnfet l=0.068u nf=1 M=1 nfin=4',
'MN_N9 SO SE net082 VBN lvtnfet l=0.116u nf=1 M=1 nfin=4']
word_list = [[word for word in item.split(' ')[:4]] for item in ls ] # Only first 4 elements from the list
final_dict = {index:{'name': ls[0], 'source':ls[1], 'gate':ls[2], 'Drain': ls[3]} for index, ls in enumerate(word_list)}
print(final_dict)
输出:
{0: {'Drain': 'VSS', 'gate': 'sout', 'name': 'MN_N3', 'source': 'net48'},
1: {'Drain': 'VSS', 'gate': 'net48', 'name': 'MN_N10', 'source': 'net082'},
2: {'Drain': 'VSS', 'gate': 'CK', 'name': 'MN_N11', 'source': 'nclk_net'},
3: {'Drain': 'net082', 'gate': 'SE', 'name': 'MN_N9', 'source': 'SO'}}
这是final_dict
dict 理解的扩展形式以供参考。
final_dict = {}
for index, ls in enumerate(word_list):
final_dict.update({index:{'name': ls[0], 'source':ls[1], 'gate':ls[2], 'Drain': ls[3]}})
print(final_dict)
推荐阅读
- angular - Angular:使用 ngComponentOutlet 渲染组件表单
- powershell - 检查 Read-Host 是否为 Switch 的数字
- c++ - 我的向量无法访问存在的元素?
- selenium - Watir - 使用代理进行身份验证
- php - default_socket_timeout 和 mysql.connect_timeout 之间的确切关系?
- string - 如果行包含特定字符串,Notepad++ 添加新行
- excel - 检查共享工作簿是否已被其他用户打开
- linux - 可以为 linux 上的同一个应用程序同时运行 IIS 和 Apache 服务器吗?
- python-3.x - 识别 git 提交的实际分支名称
- html - 背景颜色覆盖下拉菜单 bg 颜色