将文件转换为dict

时间:2013-07-23 15:02:58

标签: python string file dictionary

我如何获取文件的内容并将其更改为字典? 内容将包括此表单中的菜单项:

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

但这出现了倾斜......

4 个答案:

答案 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) }