【问题标题】:Create named tuple from subset of dict keys [duplicate]从字典键的子集创建命名元组[重复]
【发布时间】:2018-06-17 17:45:11
【问题描述】:

使以下测试通过的最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)

我想要这个的原因是我可以挑选出 dict 数据的子集并作为不可变数据传递。

【问题讨论】:

    标签: python namedtuple


    【解决方案1】:

    您可以简单地使用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)
    

    【讨论】:

      猜你喜欢
      • 2019-10-21
      • 2017-05-07
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2019-02-13
      • 2013-05-04
      • 2017-07-02
      相关资源
      最近更新 更多