【问题标题】:map multiple value to one in a dict python在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 [...]}) 例如。
  • 您为什么要这样做?似乎第一个解决方案是有效的?
  • 只是为了让解决方案更简洁。

标签: python postgresql python-3.x google-bigquery


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 2021-11-02
    • 1970-01-01
    • 2018-01-24
    • 2019-06-04
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多