2016-02-15 70 views
1

我对Python比较陌生,最近遇到了kwargs。我想我理解他们以及他们是如何工作的。但是,当我尝试使用for循环打印键和值时,它会引发ValueError:太多值来解压缩。在Python 3中打印kwargs

def shop(**kwargs): 
    sh = 1 
    print ("Welcome to the shop!") 
    for i, v in kwargs: 
     print (" ", i, ": ", v) 
    while sh == 1: 
     b = input ("What would you like to buy?").lower() 
     if b == i: 
      Player.gold -= v 
      Player.inv_plus(i) 
     elif b == "exit": 
      sh = 0 

shop(Stone=5, Potion=10) 

Player.gold是玩家多少金币,Player.inv_plus(i)为玩家的库存物品加1。尽管如此,这对我所遇到的问题并不重要。

如果我打印没有for循环的kwargs,它工作正常。但这不是我打印时想要的格式。

如果有人能解释我在做什么错我会非常感激,因为我很困惑,为什么它不工作。

回答

3

kwargs是一个字典,默认情况下迭代它们只会返回键。您需要kwargs.items()

for i, v in kwargs.items(): 
    print (" ", i, ": ", v) 
+1

只是在python2中添加一个边注意它是'kwargs.iteritems()' – danidee