在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中将多个值映射到一个的主要内容,如果未能解决你的问题,请参考以下文章
Python 字典(Dictionary) update()方法