结合听写理解和列表理解来合并听写对

2024-05-14 03:57:37 发布

您现在位置:Python中文网/ 问答频道 /正文

给定字典“国家”:

countries = [
{'country': 'Aruba', 'iso3': 'ABW'},
{'country': 'Afghanistan', 'iso3': 'AFG'},
{'country': 'Angola', 'iso3': 'AGO'}, 
{'country': 'Anguilla', 'iso3': 'AIA'},
{'country': 'Albania', 'iso3': 'ALB'},
{'country': 'Andorra', 'iso3': 'AND'}, 
{'country': 'United Arab Emirates', 'iso3': 'ARE'}, 
{'country': 'Argentina', 'iso3': 'ARG'}, 
{'country': 'Armenia', 'iso3': 'ARM'}, 
{'country': 'American Samoa', 'iso3': 'ASM'}
]

我想把iso3值作为一个键,把国家值作为一个值。期望输出:

[
{'ABW': 'Aruba'}, 
{'AFG': 'Afghanistan'}, 
{'AGO': 'Angola'}, 
{'AIA': 'Anguilla'}, 
{'ALB': 'Albania'}, 
{'AND': 'Andorra'}, 
{'ARE': 'United Arab Emirates'}, 
{'ARG': 'Argentina'}, 
{'ARM': 'Armenia'}, 
{'ASM': 'American Samoa'}
]

我通过以下方式实现了这一目标:

iso3_map = []
for country in countries:
    data = {
        country['iso3']: country['country']
    }
    iso3_map.append(data)

但我想知道如何在列表中以更优雅的方式完成它。 我试过一些方法,最接近的是:

[{v if k == 'iso3' else None: v if k == 'country' else None for k, v in country.items()} for country in countries]

但不返回所需的输出


Tags: infor国家agocountrycountriesarubaiso3
3条回答

使用

iso3_map = [{x['iso3']: x['country']}  for x in countries]

输出

[{'ABW': 'Aruba'}, 
{'AFG': 'Afghanistan'}, 
{'AGO': 'Angola'}, 
{'AIA': 'Anguilla'}, 
{'ALB': 'Albania'}, 
{'AND': 'Andorra'}, 
{'ARE': 'United Arab Emirates'}, 
{'ARG': 'Argentina'}, 
{'ARM': 'Armenia'}, 
{'ASM': 'American Samoa'}]

对于您提供的数据,您只需引用每个输入dict中的iso3country值,即可为结果中的每个dict生成键/值对:

data = [{ ctry['iso3'] : ctry['country'] } for ctry in countries]

输出:

[
 {'ABW': 'Aruba'},
 {'AFG': 'Afghanistan'},
 {'AGO': 'Angola'},
 {'AIA': 'Anguilla'},
 {'ALB': 'Albania'},
 {'AND': 'Andorra'},
 {'ARE': 'United Arab Emirates'},
 {'ARG': 'Argentina'},
 {'ARM': 'Armenia'},
 {'ASM': 'American Samoa'}
]

这将为您提供所需的输出

[{country['iso3']: country['country']} for country in countries]

相关问题 更多 >