拆分字符串后,如何使用创建的列表来创建字典?

2024-04-19 11:23:12 发布

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

我有一个文件,它的名字放在一起相互关联,我需要第一个设置为键,第二个设置为值,但是当我运行程序时,我得到了错误

ValueError: too many values to unpack

我已经研究过了,但是,我还没有找到解决的办法。下面是代码,并链接到我在尝试修复此问题时发现的一些资料。 http://www.youtube.com/watch?v=p2BwrdjlsW4

dataFile = open("names.dat", 'r')
myDict = {}
for line in dataFile:
    k,v = line.strip( ). split(",")
    myDict[k.strip (":")] = v.strip ( )
    print(k, v)
dataFile.close()
def findFather(myDict, lookUp):
    for key, value in myDict.items ( ):
        for v in value:
            if lookUp in value:
                return key
lookUp = raw_input ("Enter a son's name: ")
print "The father you are looking for is ",findFather(myDict, lookUp)

文件另存为“名称.dat“并在一行中列出所有值:

john:fred, fred:bill, sam:tony, jim:william, william:mark, krager:holdyn, danny:brett, danny:issak, danny:jack, blasen:zade, david:dieter, adam:seth, seth:enos

Tags: 文件keyinforvaluelinefredlookup
1条回答
网友
1楼 · 发布于 2024-04-19 11:23:12

代码

line.strip( ). split(",")

返回如下列表:

["jhon:fred", "fred:bill", "sam:tony", ...]

所以,当你这么做的时候

 k,v = line.strip( ). split(",")

您试图将该列表中的所有值放入只有两个值的kv。你知道吗

请尝试以下代码:

for line in dataFile:
    for pair in line.strip(). split(","):
        k,v = pair. split(":")
    myDict[k.strip (":")] = v.strip()
    print(k, v)

注意:上面的代码只是为了删除您遇到的错误。我不能保证这段代码会做你想做的事。我也不知道你想用代码做什么:

myDict[k.strip (":")] = v.strip()

相关问题 更多 >