从字典键的子集创建命名元组
Create named tuple from subset of dict keys
使以下测试通过的最 pythonic 方法是什么:
def test_named_tuple_from_map():
from collections import namedtuple
NT = namedtuple('nt', ['a', 'b', 'c'])
source = {'a': 1, 'b': 2, 'd': 4, 'c': 3}
new = NT(**source)
assert new == NT(a=1,b=2,c=3)
我想要这个的原因是我可以挑选出字典数据的子集并作为不可变数据传递。
您可以简单地使用 namedtuple
的属性 _fields
并相应地过滤字典:
def test_named_tuple_from_map():
from collections import namedtuple
NT = namedtuple('nt', ['a', 'b', 'c'])
source = {'a': 1, 'b': 2, 'd': 4, 'c': 3}
new = NT(**{k: v for k, v in source.items() if k in NT._fields})
assert new == NT(a=1, b=2, c=3)
使以下测试通过的最 pythonic 方法是什么:
def test_named_tuple_from_map():
from collections import namedtuple
NT = namedtuple('nt', ['a', 'b', 'c'])
source = {'a': 1, 'b': 2, 'd': 4, 'c': 3}
new = NT(**source)
assert new == NT(a=1,b=2,c=3)
我想要这个的原因是我可以挑选出字典数据的子集并作为不可变数据传递。
您可以简单地使用 namedtuple
的属性 _fields
并相应地过滤字典:
def test_named_tuple_from_map():
from collections import namedtuple
NT = namedtuple('nt', ['a', 'b', 'c'])
source = {'a': 1, 'b': 2, 'd': 4, 'c': 3}
new = NT(**{k: v for k, v in source.items() if k in NT._fields})
assert new == NT(a=1, b=2, c=3)