[英]Python looking through a list effectively
我目前正在使用python進行一個考試項目,在這里我必須制作一個Choropleth地圖,以顯示世界上所有不同的國家以及它們的人口。
我從api獲取數據並將其存儲在2個不同的列表中,我們將它們稱為a和b。
a包含如下所示的值:
a = [['Afghanistan', 'AF'], ['Åland Islands', 'AX'], ['Albania', 'AL'], ['Algeria', 'DZ'], ['American Samoa', 'AS'], ['Andorra', 'AD'], ['Angola', 'AO']
和b:
b = ['Afghanistan' 'AFRICA' 'Albania' 'Algeria' 'Angola'
我想創建一個名為c的僅包含值的新列表,該列表同時出現在兩個列表中。
最讓我感到困惑的是,“ a”包含國家名稱和國家/地區代碼,而“ b”包含單個值,並且彼此相鄰列出。
列表“ c”應該最終看起來像這樣:['阿富汗','阿爾巴尼亞',阿爾及利亞','安哥拉'] ...
提前致謝
您可以使用itertools.chain.from_iterable
展平第一個列表,並使用set交集 :
>>> set(itertools.chain.from_iterable(a)) & set(b)
set(['Afghanistan', 'Albania', 'Angola', 'Algeria'])
如果您不想導入itertools(以犧牲一些性能為代價):
>>> set([i for j in a for i in j]) & set(b)
set(['Afghanistan', 'Albania', 'Angola', 'Algeria'])
我對python來說還太陌生,我不知道預定義的函數,因此我將邏輯寫給您。 希望這項工作對您有幫助...
a = [['Afghanistan', 'AF'], ['Åland Islands', 'AX'], ['Albania', 'AL'], ['Algeria', 'DZ'], ['American Samoa', 'AS'], ['Andorra', 'AD'], ['Angola', 'AO']]
b = ['Afghanistan' ,'AFRICA', 'Albania' ,'Algeria', 'Angola']
c=[]
for i in range(0,len(b)):
for j in range(0,len(a)):
if(b[i]==a[j][0]):
c.append(b[i])
break
print(c)
在python中玩得開心
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.