代码之家  ›  专栏  ›  技术社区  ›  user1298416

python字符串列表,替换不属于特定子列表的所有出现

  •  0
  • user1298416  · 技术社区  · 3 年前

    使用[color1,color2,color0,color3,color0,color0] 所以我需要用默认颜色替换[device1,device2,device3]中没有的所有设备。到目前为止,我已经:

    set_colors: Callable[[str], str] = lambda s: s \
        .replace(device1, color1) \
        .replace(device2, color2) \
        .replace(device3, color3) 
    

    如何使用所有其他设备实现该部分?我尝试了regex,但是我不知道如何将它包含在lambda函数中。

    1 回复  |  直到 3 年前
        1
  •  1
  •   gribvirus74    3 年前

    如果要替换的字符串已知,则可以这样做:

    def foo(values: List[str]) -> List[str]:
        replacements = {
            'device1': 'color1',
            'device2': 'color2',
            'device3': 'color3'
        }
    
        return [
            replacements.get(x) or 'color0'
            for x in values
        ]
    

    使用 def 而不是 lambda ( PEP8 E731

    但是如果你 真正地 需要一个 λ

    foo = lambda values: [replacements.get(x) or 'color0' for x in values]