Python有效地查看列表

时间:2018-05-14 16:59:31

标签: python python-3.x

我目前正在研究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”应该最终看起来像这样:['阿富汗','阿尔巴尼亚',阿尔及利亚','安哥拉'] ......

提前致谢

2 个答案:

答案 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中玩得开心