【问题标题】:Replacing parts of string from values in dict in python从python中的dict中的值替换部分字符串
【发布时间】:2021-08-24 09:13:09
【问题描述】:

我在 python 中有一本字典,例如 -

partitions = {'train': ['data/xyz/id-1', 'data/xyz/id-2', 'data/xyz/id-3',......], 
               'validation': ['data/pqr/id-4','data/pqr/id-5',.......]}

对于键“train”的所有值,我想将“data/xyz”替换为“samples/folder1”。

新值将是

samples/folder1/id-1、samples/folder1/id-2、samples/folder1/id-3 等

类似地,对于键 'validation' 的所有值,'data/pqr' 到 'samples/test'。

我无法弄清楚如何以简洁的方式做到这一点。任何帮助将不胜感激。

【问题讨论】:

    标签: python python-3.x string dictionary replace


    【解决方案1】:

    对字符串使用简单循环和replace

    partitions = {'train': ['data/xyz/id-1', 'data/xyz/id-2', 'data/xyz/id-3'], 
                   'validation': ['data/pqr/id-4','data/pqr/id-5']}
    replaces = {'train' : ['samples/folder1', 'data/xyz'] , 'validation' : ['samples/test','data/pqr']}
    for key , value in partitions.items():
        temp = []
        for v in value:
            temp.append(v.replace(replaces[key][1], replaces[key][0]))
        partitions[key] = temp
    print(partitions)
    

    【讨论】:

      【解决方案2】:

      这些只是分配给键的列表,因此您可以使用列表推导来重建列表并替换字符串中的值。

      partitions = {
          'train': ['data/xyz/id-1', 'data/xyz/id-2', 'data/xyz/id-3'],
          'validation': ['data/pqr/id-4', 'data/pqr/id-5']
      }
      
      print(partitions)
      partitions['train'] = [value.replace('data/xyz', 'samples/folder1') for value in partitions['train']]
      partitions['validation'] = [value.replace('data/pqr', 'samples/test') for value in partitions['validation']]
      print(partitions)
      

      输出

      {'train': ['data/xyz/id-1', 'data/xyz/id-2', 'data/xyz/id-3'], 'validation': ['data/pqr/id-4', 'data/pqr/id-5']}
      {'train': ['samples/folder1/id-1', 'samples/folder1/id-2', 'samples/folder1/id-3'], 'validation': ['samples/test/id-4', 'samples/test/id-5']}
      
      

      【讨论】:

      • 谢谢!正是我想要的。我想避免循环。
      猜你喜欢
      • 1970-01-01
      • 2018-04-25
      • 2021-10-02
      • 2015-02-04
      • 2018-01-22
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多