首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python中的文件制作字典

用python中的文件制作字典
EN

Stack Overflow用户
提问于 2014-11-07 22:27:52
回答 3查看 78关注 0票数 1

我正试着制作一本字典,把演员的名字作为钥匙,把他们的电影作为价值

该文件如下所示:

代码语言:javascript
复制
Brad Pitt,Sleepers,Troy,Meet Joe Black,Oceans Eleven,Seven,Mr & Mrs Smith
Tom Hanks,You have got mail,Apollo 13,Sleepless in Seattle,Catch Me If You Can

我希望这是输出:

代码语言:javascript
复制
{Brad Pitt : Sleepers,Troy,Meet Joe Black,Oceans Eleven,Seven,Mr & Mrs Smith
Tom Hanks : You have got mail,Apollo 13,Sleepless in Seattle,Catch Me If You Can}

我认为我的问题是,由于某些原因,我无法访问该文件,尽管我的代码当然可能有其他问题,但我没有看到。我现在拥有的是:

代码语言:javascript
复制
from Myro import *
    def makeDictionaryFromFile():
    dictionary1={}
    try:
        infile = open("films.txt","r")
        nextLineFromFile = infile.readline().rstrip('\r\n')
        while (nextLineFromFile != ""):
            line = nextLineFromFile.split(",")
            first=line[0]
            dictionary1[first]=line[1:]
            nextLineFromFile = infile.readline().rstrip('\r\n')
    except:
        print ("File not found! (or other error!)")
    return dictionary1
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-07 22:38:15

您需要开始使用超级有用的ipdb模块。

代码语言:javascript
复制
try:
  # some error
except Exception as e:
  print e
  import ipdb
  ipdb.set_trace()

如果您习惯了这个过程,它将对您在这方面以及将来的调试中有很大的帮助。

票数 1
EN

Stack Overflow用户

发布于 2014-11-07 22:37:54

试试这个:

代码语言:javascript
复制
mydict = {}
f = open('file','r')
for x in f:
    s = s.strip('\r\n').split(',')
    mydict[s[0]] = ",".join(s[1:])
print mydict

s[0]将有演员的名字,s[1:]是他所有的电影名字

使用readline读行只读取下面的line.suppose是一个名为test.txt的文件

代码语言:javascript
复制
Hello stackoverflow
hello Hackaholic

代码:

代码语言:javascript
复制
f=open('test.txt')
print f.readline()
print f.readline()

产出:

代码语言:javascript
复制
Hello stackoverflow
hello Hackaholic

您还需要将您的readline放在侧while循环中,还需要进行其他一些更改。

票数 0
EN

Stack Overflow用户

发布于 2014-11-07 22:38:51

代码语言:javascript
复制
>>> dictionary1 = {}
>>> for curr_line in open("films.txt").xreadlines():
...     split_line = curr_line.strip().split(",")
...     dictionary1[split_line.pop(0)] = split_line

>>> dictionary1
{'Brad Pitt': ['Sleepers', 'Troy', 'Meet Joe Black', 'Oceans Eleven', 'Seven', 'Mr & Mrs Smith'], 'Tom Hanks': ['You have got mail', 'Apollo 13', 'Sleepless in Seattle', 'Catch Me If You Can']}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26811153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档