微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

结合字典理解和列表理解来合并字典对

如何解决结合字典理解和列表理解来合并字典对

给定字典“国家”:

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]

但不返回所需的输出

解决方法

这应该会给你你想要的输出。

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

使用

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'}]
,

对于您提供的数据,您可以只引用每个输入字典中的 iso3country 值来为结果中的每个字典创建键/值对:

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

输出:

[
 {'ABW': 'Aruba'},{'ASM': 'American Samoa'}
]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?