我目前正在研究python中的考试项目,在那里我必须制作一个等值线图,显示世界上所有不同的国家,以及他们的人口。
我从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”应该最终看起来像这样:['阿富汗','阿尔巴尼亚',阿尔及利亚','安哥拉'] ......提前致谢
答案 0 :(得分:2)
您可以使用itertools.chain.from_iterable
展平第一个列表并使用set intersection:
>>> 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'])
答案 1 :(得分:0)
我对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中玩得开心