2017-05-17 83 views
0

这里遍历一个字典的关键是从我的Python功能之一的摘录:通过多个值在Python

d = {'ANIMAL' : ['CAT','DOG','FISH','HEDGEHOG']} 
d_list = [] 
for key,value in d.iteritems(): 
    temp = [key, value] 
    d_list.append(temp) 

当我打印d_list它目前给我:

>>>print d_list 
[['ANIMAL', ['CAT', 'DOG', 'FISH', 'HEDGEHOG']]] 

我如何重写函数,使它给我︰

>>>print d_list 
[['ANIMAL', 'CAT'],['ANIMAL', 'DOG'],['ANIMAL', 'FISH'],['ANIMAL', 'HEDGEHOG']] 

回答

2

两个嵌套循环可以很容易地做到这一点 -

d = {'ANIMAL' : ['CAT','DOG','FISH','HEDGEHOG']} 
d_list = [] 
for key, values in d.iteritems(): 
    for value in values: 
     d_list.append([key, value]) 

使用列表理解 -

d_list = [[k,v] for k, values in d.iteritems() for v in values] 

为Python 3.x的,你应该改变iteritemsitems

+0

为什么我没有想到使用列表理解。可能值得注意的是'iteritems'已经在python 3中变成'items'了。 –

+0

谢谢谢尔,我在我的回答中加入了我的回答 – kuro

+0

你的评论让我意识到我忘了我的第一部分中的字母'a'名称。我只是修复了它... LoL –

0

这是我会怎么做。我会直接遍历键的值。

d = {'ANIMAL' : ['CAT','DOG','FISH','HEDGEHOG']} 

d_list = [] 

for value in d['ANIMAL']: 
    temp = ['ANIMAL',value] 
    d_list.append(temp) 

print (d_list) 

结果:

[['ANIMAL', 'CAT'], ['ANIMAL', 'DOG'], ['ANIMAL', 'FISH'], ['ANIMAL', 'HEDGEHOG']] 
+0

您的代码对于测试数据是正确的。但是最好是做代码,以便它可以用于字典 – kuro

+0

@Kuro中的多个条目:True。然而,OP没有询问多种用途。我只回答了我能想到的最简单的解决方案。 –

0

你需要第二个循环:

d = {'ANIMAL' : ['CAT','DOG','FISH','HEDGEHOG']} 
d_list = [] 

for key, values in d.iteritems(): 
    for value in values: 
      temp_list=[key, value] 
      d_list.append(temp)