2015-02-23 124 views
0

我有一本字典列表此附加字典到列表

'main_addr': ['[email protected]','[email protected]','[email protected]'] 
'sec_addr' : [email protected] 

我试图让,结合所有这些值的列表,以便我做

mylist.append(main_addr) 
    mylist.append(sec_addr) 

但是当我打印出来MYLIST它是

['[email protected]','[email protected]','[email protected]'],[email protected]] 

但我想获得仅仅是一个所有的电子邮件列表不是一个子表,并有时间,其中sec_add WIL l包含一个列表

回答

0

而是使用追加你也可以使用extend第一列表

>>> a = [1,2,3] 
>>> b = "foo" 
>>> d = [] 
>>> d.extend(a) 
>>> d.append(b) 
>>> d 
[1, 2, 3, 'foo'] 

或者在你的情况

mylist.extend(main_addr) 
mylist.append(sec_addr) 
1

使用isinstance方法检查字典值是否为列表。

>>> d = {'main_addr': ['[email protected]','[email protected]','[email protected]'] ,'sec_addr' : '[email protected]'} 
>>> mylist = [] 
>>> for i in d.values(): 
     if isinstance(i,list): 
      for x in i: 
       mylist.append(x) 
    else: 
     mylist.append(i) 


>>> mylist 
['[email protected]', '[email protected]', '[email protected]', '[email protected]'] 
+0

的但有时会出现这种情况e是字典中的更多东西,我不想将它们添加到列表 – 2015-02-23 05:00:07

2

你可以做这样的事情

mylist = [] 
d = {'main_addr': ['[email protected]','[email protected]','[email protected]'] ,'sec_addr' : '[email protected]'} 
for items in d.values(): 
    mylist.extend(items if isinstance(items,list) else [items]) 

print mylist 
['[email protected]', '[email protected]', '[email protected]', '[email protected]'] 
+3

为什么有人会使用'items .__ class __.__ name__ =='list''而不是'isinstance()'? – 2015-02-23 05:24:01

+1

@AshwiniChaudhary使用.__类__.__名称___是一种不好的做法。 – 2015-02-23 05:26:00

+0

@AuuragSharma是的,因为.__ name__在包装类中并不完整。另外,它并没有考虑任何列表的子类,因为某些人可能会出于某种未知的原因而这样做 – 2015-02-23 05:52:28