将词典添加到列表中

时间:2015-02-23 04:51:05

标签: python string list

我有一个字典列表

'main_addr': ['test@aol.com','test2@aol.com','test3@aol.com']
'sec_addr' : test4@aol.com

我正在尝试制作一个包含所有这些值的列表,所以我这样做

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

但是当我打印出mylist时,它是

    ['test@aol.com','test2@aol.com','test3@aol.com'],test4@aol.com]

但我想要得到的只是所有电子邮件的列表而不是子列表,并且有时间sec_add将包含列表

3 个答案:

答案 0 :(得分:2)

你可以做这样的事情

mylist = []
d = {'main_addr': ['test@aol.com','test2@aol.com','test3@aol.com'] ,'sec_addr' : 'test4@aol.com'}
for items in d.values():
    mylist.extend(items if isinstance(items,list) else [items])

print mylist
['test@aol.com', 'test2@aol.com', 'test3@aol.com', 'test4@aol.com']

答案 1 :(得分:1)

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

>>> d = {'main_addr': ['test@aol.com','test2@aol.com','test3@aol.com'] ,'sec_addr' : 'test4@aol.com'}
>>> mylist = []
>>> for i in d.values():
        if isinstance(i,list):
            for x in i:
                mylist.append(x)
    else:
        mylist.append(i)


>>> mylist
['test@aol.com', 'test2@aol.com', 'test3@aol.com', 'test4@aol.com']

答案 2 :(得分: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)