【问题标题】:Condensing the following code, preferably using a dictionary comprehension压缩以下代码,最好使用字典推导
【发布时间】:2017-06-18 03:42:25
【问题描述】:

是否可以(更重要的是,实用)将以下代码编写为 dict 理解?

我在这里创建一个字典,然后检查“空白”值(由“-”表示)并将其替换为另一个字符串值。

test_dict = dict(zip(list_one,list_two))
for k,v in test_dict.items():
    if v == '-':
        test_dict[k] = 'missing'

【问题讨论】:

    标签: python dictionary dictionary-comprehension dict-comprehension


    【解决方案1】:

    为什么在创建字典时不进行替换?

    test_dict = dict(zip(list_one, 
                         ('missing' if x == '-' else x for x in list_two)))
    

    或者,如果您有一个现有的字典,您可以使用以下方法创建一个

    {k: 'missing' if v == '-' else v for k, v in d.items()}
    

    如果您希望就地更改 现有 字典,那么现有代码确实没有任何问题。您可以使用列表理解,例如:

    [d.__setitem__(k, 'missing') for k, v in d.items() if v == '-']
    

    但那是相当丑陋的。

    【讨论】:

    • 这不仅仅是丑陋的,你在理解中玩弄可变性,在内存中构建一个完全无用的列表,最终可能会很大。
    • @DanielSanchez 显然......正如我所说,丑陋。 (大小并不是真正的问题,这可以用同样丑陋的any(...) 包裹起来来避免这种情况)
    • 非常感谢@donkopotamus 我喜欢第一个建议。
    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 2021-11-15
    • 2022-10-24
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多