在dict python中将多个值映射到一个

Posted

技术标签:

【中文标题】在dict python中将多个值映射到一个【英文标题】:map multiple value to one in a dict python 【发布时间】:2017-08-15 14:32:29 【问题描述】:

我想将一些数据从 postgres 移动到 BigQuery。

为此,我可以查询 postgres 表以获取架构,然后映射数据类型。

lookup = 
    'char': 'STRING',
    'character': 'STRING',
    'varchar': 'STRING',
    'character varying': 'STRING',
    'text': 'STRING'

我的问题是,我可以这样做,以便我可以提供一个列表(或对应于 STRING 的值的元组。

类似,在非常伪代码级别:

lookup = 
      lambda x: if x in ['char', 'character' ... ] : 'STRING' else if x in ['int'] : 'INTEGER' else None

这将返回数据类型

lookup['char']
> STRING

【问题讨论】:

我想知道:为什么?我只看到结果更难阅读。但是有几个选项 lookup = ...; for key in [...]:; lookup[key] = 'STRING';lookup.update(key: 'STIRNG' for key in [...]) 例如。 您为什么要这样做?似乎第一个解决方案是有效的? 只是为了让解决方案更简洁。 【参考方案1】:

虽然我同意 cmets 问为什么?,但如果您认为它更好,并且不难阅读,您可以这样做:

>>> from collections import defaultdict
>>> lookup = defaultdict(lambda: 'STRING', int='INTEGER')
>>> lookup['int']
'INTEGER'
>>> lookup['char']
'STRING'
>>> lookup['varchar']
'STRING'

【讨论】:

以上是关于在dict python中将多个值映射到一个的主要内容,如果未能解决你的问题,请参考以下文章

Dict_字典

Python 字典(Dictionary) update()方法

如何在 Python 中将类型化.Union 转换为其子类型之一?

将一个值映射到多个值的最佳方法[重复]

在python中将值解包到多个变量中

Python 映射类型字典dict操作定义