【问题标题】:Replacing values in a Python list/dictionary?替换 Python 列表/字典中的值?
【发布时间】:2010-11-07 18:32:21
【问题描述】:

好的,我正在尝试过滤传递给我的列表/字典并稍微“清理”一下,因为其中有一些我需要删除的值。

所以,如果它看起来像这样:

"records": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"...}]

如何快速轻松地完成所有操作并将“AAA”的所有值替换为“XXX”之类的值?

重点是速度和资源,因为这些可能很长,我不希望这个过程消耗太多时间。

【问题讨论】:

    标签: python list dictionary replace


    【解决方案1】:

    就我而言,在 字典理解 中使用 if/else 比上述答案快得多。在下文中,我为您的用例提供了一个通用示例:

    DATA = {"records_0": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"},
                          {"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}],
            "records_1": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}]}
    
    Replaced_DATA = {k:[
    {k_0:v_0 if v_0!='AAA' else 'XXX' for k_0,v_0 in v_.items()} for v_ in v] for k,v in DATA.items()}
    

    这是输出:

    Replaced_DATA
    Out[1]. {'records_0': [{'key1': 'XXX', 'key2': 'BBB', 'key3': 'CCC', 'key4': 'XXX'}, 
                           {'key1': 'XXX', 'key2': 'BBB', 'key3': 'CCC', 'key4': 'XXX'}],
             'records_1': [{'key1': 'XXX', 'key2': 'BBB', 'key3': 'CCC', 'key4': 'XXX'}]}
    

    【讨论】:

      【解决方案2】:
      DATA = {"records": [{"key1": "AAA", "key2": "BBB", "key3": "CCC", "key4": "AAA"}]}
      
      for name, datalist in DATA.iteritems():  # Or items() in Python 3.x
          for datadict in datalist:
              for key, value in datadict.items():
                  if value == "AAA":
                      datadict[key] = "XXX"
      
      print (DATA)
      # Prints {'records': [{'key3': 'CCC', 'key2': 'BBB', 'key1': 'XXX', 'key4': 'XXX'}]}
      

      【讨论】:

      • 是的,这就像一个魅力。我错过了一个外部循环并收到 list/items() 错误...谢谢!
      【解决方案3】:
      dic = root['records'][0]
      for i, j in dic.items():       # use iteritems in py2k
          if j == 'AAA':
              dic[i] = 'xxx'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-23
        • 2020-07-11
        • 2019-04-07
        • 2013-11-15
        • 1970-01-01
        • 2020-05-25
        相关资源
        最近更新 更多