【问题标题】:Extract sub dictionary from keys that appear in a given list [duplicate]从给定列表中出现的键中提取子字典[重复]
【发布时间】:2017-11-23 02:03:18
【问题描述】:

假设我有一本如下所示的字典:

{1=>a, 2=>b, 3=>c, 4=>d}

还有一个如下所示的列表:

[1, 2, 3]

有没有一种方法可以返回一个只包含的子字典

{1=>a, 2=>b, 3=>c}

【问题讨论】:

    标签: python python-2.7 python-3.x


    【解决方案1】:

    常规的 dict-comprehension 会做到这一点:

    d = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
    keys = [1, 2, 3]
    
    dct = {key: d[key] for key in keys}
    print(dct)  # {1: 'a', 2: 'b', 3: 'c'}
    

    有两种方法可以处理keys 中不在原始字典中的键:

    keys = [1, 2, 3, 7]
    
    # default value None
    dct = {key: d[key] if key in d else None for key in keys}
    print(dct)  # {1: 'a', 2: 'b', 3: 'c', 7: None}
    
    # ignore the key if it is not in the original dict
    dct = {key: d[key] for key in set(keys).intersection(d.keys())}
    print(dct)  # {1: 'a', 2: 'b', 3: 'c'}
    

    【讨论】:

    • 工作正常。谢谢。
    • 时间限制 :) 你介意快速告诉我检查列表中的键是否确实存在的语法吗?
    • @kjanko 为此添加了更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2022-11-21
    • 1970-01-01
    • 2020-04-18
    • 2021-09-26
    • 2016-09-24
    • 2017-02-28
    相关资源
    最近更新 更多