簡體   English   中英

將字典追加到列表

[英]appending dictionaries to a 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)

但是當我打印出我的清單時

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

但是我要獲取的只是所有電子郵件的列表,而不是子列表,並且有時sec_add將包含一個列表

你可以做這樣的事情

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']

使用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']

除了使用附加,您還可以對第一個列表使用擴展

>>> 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM