从字典中获取一些值,默认值不同于“无”(Python) [英] Getting a few values out of dictionary with default different than None (Python)

查看:144
本文介绍了从字典中获取一些值,默认值不同于“无”(Python)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不太喜欢这样:使用多个访问python dict关键字查找字符串

因此:

In [113]: d = {'a':1, 'b':2}

In [114]: va, vb = map(d.get, ['a', 'b'])

In [115]: va, vb
Out[115]: (1, 2)

但是:

In [116]: va, vb = map(d.get, ['a', 'X'])

In [117]: va, vb
Out[117]: (1, None)

如果需要默认值而不是默认值怎么办?

What if one needs a default different than None?

我可以使用lambda:

I could use lambda:

In [118]: va, vb = map(lambda x: d.get(x) or 'MyDefault', ['a', 'c'])

In [119]: va, vb
Out[119]: (1, 'MyDefault')

但这对于写2个d.get(key,'MyDefault')调用来说有点费解,而且不太经济。

But that's kind of convoluted and not very economic tradeoff for writing 2 d.get(key, 'MyDefault') calls.

一切都好(ob短)编写琐碎的效用函数的先前解决方案)? Esp。在Python 3中?

Anything better (short of obvious solution of writing trivial utility function for that)? Esp. in Python 3?

推荐答案

使用 collections.defaultdict

>>> from collections import defaultdict
>>> d = defaultdict(lambda: 'MyDefault', {'a':1, 'b':2})
>>> d['c']
'MyDefault'
>>> map(d.get, ['a', 'c'])
[1, None]
>>> map(d.__getitem__, ['a', 'c'])
[1, 'MyDefault']

这篇关于从字典中获取一些值,默认值不同于“无”(Python)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆