python:在字典中创建列表

2024-09-23 20:21:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始使用python,我正试图创建一个程序来读取如下所示的文件:

AAA x 111
AAB x 111
AAA x 112
AAC x 123
...

这个文件有50行长,我正试图把这些字母编成字典里的键,以及与键对应的数字列表。

我希望输出如下:

{AAA: ['111', '112'], AAB: ['111'], AAC: [123], ...}

这是我试过的

file = open("filename.txt", "r") 
readline = file.readline().rstrip()
while readline!= "":
    list = []
    list = readline.split(" ")
    j = list.index("x")
    k = list[0:j]
    v = list[j + 1:]
    d = {}
    if k not in d == False:
        d[k] = []
    d[k].append(v)
    readline = file.readline().rstrip()

我的if语句总是出现语法错误,我无法找出我做错了什么。


Tags: 文件程序readlineif字典字母数字list
3条回答

你在结尾处缺少冒号,也可以这样写:

if k not in d:
    d[k] = [v]
else:
    d[k].append(v)

在if语句的末尾需要冒号;此版本应该可以工作:

   if k in d == False:
      d[k] = []
      d[k].append(v)
   else:
      d[k].append(v)

使用defaultdict使您的生活更轻松

>>> out = defaultdict(list)
>>> with open('test.txt') as f:
      for line in f.readlines():
        x = line.split()
        out[x[0]].append(int(x[2]))

如果可能的话,使用with语句打开文件也是很好的做法。你最初的例子有两个条目str,一个是int,我刚刚把这里的所有条目都转换成了int

相关问题 更多 >