我有一个字典列表
'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将包含列表
答案 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)