ValueError:在Python Dictionary中解压缩的值太多

Mp *_*ega 6 python dictionary

我有一个接受字符串,列表和字典的函数

def superDynaParams(myname, *likes, **relatives): # *n is a list and **n is dictionary
    print '--------------------------'
    print 'my name is ' + myname

    print 'I like the following'

    for like in likes:
        print like

    print 'and my family are'

    for key, role in relatives:
        if parents[role] != None:
             print key + ' ' + role
Run Code Online (Sandbox Code Playgroud)

但它返回一个错误

ValueError:要解压缩的值太多

我的参数是

superDynaParams('Mark Paul',
                'programming','arts','japanese','literature','music',
                father='papa',mother='mama',sister='neechan',brother='niichan')
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 14

你正在循环字典:

for key, role in relatives:
Run Code Online (Sandbox Code Playgroud)

但这只会产生密钥,所以一次只能产生一个对象.如果要循环键和值,请使用以下dict.items()方法:

for key, role in relatives.items():
Run Code Online (Sandbox Code Playgroud)

在Python 2上,使用该dict.iteritems()方法提高效率:

for key, role in relatives.iteritems():
Run Code Online (Sandbox Code Playgroud)