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

时间:2014-04-14 17:35:48

标签: python dictionary

我有一个文件,其名称放在一起,彼此相关,我需要第一个设置为一个键,第二个设置为一个值,但是当我运行程序时,我得到错误

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)

文件保存为" names.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

1 个答案:

答案 0 :(得分:1)

代码

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()