首页 > 解决方案 > 如何将两个列表(如果一个是具有多个列表的元组)连接到字典中……

问题描述

...通过仅获取第一个列表中存在的项目?

countries = ['PAN','ARG','NGA','KOR','SRB','BIH']
country_data = [
    ('arg', 'Argentina', 'SouthAmerica', 41.2238883972168),
    ('geo', 'Georgia', 'Asia', 4.231660842895509),
    ('kor', 'South Korea', 'Asia', 49.5528564453125),
    ('swz', 'Swaziland', 'Africa', 1.2028429508209229),
    ('cog', 'Republic of the Congo', 'Africa', 4.386693000793457),
    ('srb', 'Serbia', 'Europe', 7.291436195373535),
    ('pan', 'Panama', 'NorthAmerica', 3.643222093582153),
    ('ita', 'Italy', 'Europe', 59.72980880737305),
    ('dma', 'Dominica', 'NorthAmerica', 0.07143999636173247),
    ('nga', 'Nigeria', 'Africa', 158.57826232910156),
    ('bih', 'Bosnia and Herzegovina', 'Europe', 3.722084045410156)]

countries = [item.lower() for item in countries]
Input1 = countries
Input2 = country_data
for elm2 in Input2:
for elm1 in Input1:
    if elm2[key[1]] == elm1[key[1]]:
        break
else:
    Input1.append(elm2)

我首先将列表国家/地区中的元素设置为小写,以便可以比较它们,但是当我尝试获取数据时出现错误。将两个列表转换为仅包含列表国家键值的字典的更好方法是什么?

标签: pythonlistdictionary

解决方案


countries = ['PAN','ARG','NGA','KOR','SRB','BIH']
country_data = [
('arg', 'Argentina', 'SouthAmerica', 41.2238883972168),
('geo', 'Georgia', 'Asia', 4.231660842895509),
('kor', 'South Korea', 'Asia', 49.5528564453125),
('swz', 'Swaziland', 'Africa', 1.2028429508209229),
('cog', 'Republic of the Congo', 'Africa', 4.386693000793457),
('srb', 'Serbia', 'Europe', 7.291436195373535),
('pan', 'Panama', 'NorthAmerica', 3.643222093582153),
('ita', 'Italy', 'Europe', 59.72980880737305),
('dma', 'Dominica', 'NorthAmerica', 0.07143999636173247),
('nga', 'Nigeria', 'Africa', 158.57826232910156),
('bih', 'Bosnia and Herzegovina', 'Europe', 3.722084045410156)]


filtered_countries = [country for country in country_data
                      if country[0].upper() in countries]
print(filtered_countries)

输出:

[('arg', 'Argentina', 'SouthAmerica', 41.2238883972168), ('kor', 'South Korea', 'Asia', 49.5528564453125), ('srb', 'Serbia', 'Europe', 7.291436195373535), ('pan', 'Panama', 'NorthAmerica', 3.643222093582153), ('nga', 'Nigeria', 'Africa', 158.57826232910156), ('bih', 'Bosnia and Herzegovina', 'Europe', 3.722084045410156)]

推荐阅读