2016-04-26 41 views
0

我有以下代码来打印字典中的项目。dict.items()在python字典返回类型

my_dict = { 
       "apples": 430, 
       "bananas": 312, 
       "oranges": 525, 
       "pears": 217, 
       "strawberries": 267, 
       "blueberry": 179, 
       "boysenberry": 432, 
       "blackberry": 266, 
       "apricot": 321, 
       "plum": 143, 
       "peaches": 154 
      } 

for k, v in my_dict.items(): 
    print('key {} value {}\n'.format(k, v)) 

上面的代码工作正常,并打印键和值。只是出于好奇,我想尝试

k,v = my_dict.items() 

它给了我一个错误。我想知道这是为什么?我的理解是,my_dict.items()返回k and v

+2

'.items()'给你键值对的*迭代* - 除非你正好有两个键,即分配必然会失败。 – jonrsharpe

+1

为什么不先试着在my_dict.items()中使用'for:object(对象)'来更好地了解你正在迭代的内容? – TigerhawkT3

回答

2

它返回项目列表(在python3 dict_items对象),你不能将它们分配给两个变量。如果你想单独拿到钥匙和值,你可以使用dict.keys()dict.values()属性:

>>> my_dict.items() 
[('bananas', 312), ('oranges', 525), ('peaches', 154), ('strawberries', 267), ('boysenberry', 432), ('apricot', 321), ('plum', 143), ('pears', 217), ('apples', 430), ('blueberry', 179), ('blackberry', 266)] 
>>> 
>>> k, v = my_dict.keys(), my_dict.values() 
>>> 
>>> k 
['bananas', 'oranges', 'peaches', 'strawberries', 'boysenberry', 'apricot', 'plum', 'pears', 'apples', 'blueberry', 'blackberry'] 
>>> 
>>> v 
[312, 525, 154, 267, 432, 321, 143, 217, 430, 179, 266] 
+1

*咳嗽*蟒蛇3 *咳嗽* – jonrsharpe