python - 如何从文件中制作字典?
问题描述
我有以下文件(制表符分隔):
ID Name Abbr Disctrict
*data*
1 Newcastle NC AA,BB,CC
2 Manchester MCR AA,DD,FF
3 Liverpool LV FF,GG,HH
我试图在字典中放置index[1]
键和值。index[3]
它似乎还没有工作。
my_dict = {}
path = (r'c:\data\GG\Desktop\Extra\UK_test_cities.txt')
with open(path, 'r') as f:
for line in f:
(key, val) = line.split()
my_dict[int(key)] = val
这是我的输出:
File "c:/data/GG/Desktop/Extra/test_1.py", line 17, in <module>
(key, val) = line.split()
ValueError: too many values to unpack (expected 2)
这是我想要的输出:
my_dict = {'Newcastle': ['AA,BB,CC'],
'Manchester': ['AA,DD,FF'],
'Liverpool': ['FF,GG,HH']}
解决方案
每行有 4 列
from collections import defaultdict
path = (r'c:\data\GG\Desktop\Extra\UK_test_cities.txt')
my_dict=defaultdict()
with open(path, 'r') as f:
content = f.readlines()
for line in content[2:]: #First two line does not contain data
_,key,_,val = line.split()
my_dict[key] = val
推荐阅读
- uwp - 如何更改 UWP NavigationView 中 PaneToggleButton 的颜色?
- mysql - 更改 mysql (homebrew) 数据目录
- java - 在请求 URL 中获取相同参数名称的多个值 - Spring boot
- python - 如何在 Python 中的 for 循环的每次迭代中创建一个新的数据框
- c# - 在文本框中显示不同的数字
- html - 创建居中的 GDPR 横幅
- javascript - 只有第一个 img 标签从 *ngFor li 标签不断变化
- javascript - Expressjs: throw new TypeError('Router.use() 需要一个中间件函数但得到一个' + gettype(fn))
- cassandra - 与 Apache Cassandra 相比,AlibabaTable Store 有何不同和高效?
- c++ - 从基本类型到用户定义类型的转换