我如何获取文件的内容并将其更改为字典? 内容将包括此表单中的菜单项:
1 Chocolate ice cream
2 Green tea
8 Shrimp roll
我希望钥匙成为食品的数字和价值。
到目前为止,我得到了:
d = {}
for line in menu.read().strip().split():
d[line[0]] = d[line[1:]]
return d
但这出现了倾斜......
答案 0 :(得分:5)
逐行循环遍历文件对象,然后拆分行:
with open('inputfilename.txt') as menu:
d = {}
for line in menu:
key, value = line.split(None, 1)
d[key] = value.strip()
return d
.split(None, 1)
调用应用默认的分割算法(在任意宽度的空白上拆分),但将其限制为一个拆分只返回2个项目。优点是以空格开始的行(例如帖子中的' 8 Shrimp roll'
行)也会被正确处理,因为在拆分前删除了前导空格。
这会产生:
{'2': 'Green tea', '1': 'Chocolate ice cream', '8': 'Shrimp roll'}
答案 1 :(得分:2)
你可以试试这个:
d = {}
for line in menu.read().strip().split():
d[line[0]] = line[1:] # you want to use just line[1:], than d[line[1:]]
return d
此处的问题是d[line[1:]]
为您提供了按键line[1:]
映射的值。
答案 2 :(得分:2)
>>> finalDict = {}
>>> with open('fileName.txt', 'r') as f:
for line in f:
key, elem = line.strip().split(" ", 1)
finalDict[int(key)] = elem
>>> finalDict
{8: 'Shrimp roll', 1: 'Chocolate ice cream', 2: 'Green tea'}
我们迭代文件的每一行,剥离它,然后在第一个空格上拆分它。
答案 3 :(得分:2)
字典理解怎么样?
{ k:v.strip() for k, v in (line.split(None, 1) for line in menu) }