【问题标题】:How to replace characters in list item as keys with values in dictionary如何用字典中的值替换列表项中的字符作为键
【发布时间】:2018-10-30 16:30:22
【问题描述】:

我正在尝试做这样的事情:

我的意见

predefined_list=['gross pay']
predefined_dict={'a':'o','o':'a','g':'c','c':'g'}

想要的

output: ['gross pay', 'gross poy', 'grass pay', 'crass pay', cross pay, crass poy] 

还有其他几种组合。

我试过了:

predefined_list=['gross pay']
predefined_dict={'a':'o','o':'a','g':'c','c':'g'}

i=0;
for key,value in predefined_dict.items():
    final=predefined_list[i].replace(key,value)
    i+=1
    if final not in predefined_list:
        predefined_list.append(final)
print(predefined_list)

【问题讨论】:

  • 为什么要在循环内重新分配prefefined_dict
  • 更新了,我的错

标签: python python-3.x list dictionary data-structures


【解决方案1】:

只需通过遍历字典的键和值来替换字符串

modified_list = [predefined_list[0].replace(k,v) for k,v in predefined_dict.items()]

输出

['gross poy', 'grass pay', 'cross pay', 'gross pay']

同样

predefined_list = ['pay gross', 'gross pay']
modified_dict = {list_k: [list_k.replace(k,v) for k,v in predefined_dict.items()]
                 for list_k in predefined_list}

输出

{'gross pay': ['gross poy', 'grass pay', 'cross pay', 'gross pay'],
 'pay gross': ['poy gross', 'pay grass', 'pay cross', 'pay gross']}

【讨论】:

    【解决方案2】:

    试试这个方法

    for key, value in predefined_dict.items():
            for  word in predefined_list:
                for n in range(word.count(key)):
                    final = word.replace(key,value,n+1)
                    if final not in predefined_list:
                        predefined_list.append(final)
    

    输出:

    >>> predefined_list
    
    ['gross pay', 'gross poy', 'grass pay', 'grass poy', 'cross pay', 'cross poy', 'crass pay', 'crass poy']
    

    【讨论】:

    • crass poy & Grass poy 不见了
    • 我的错误,n 的整个循环是循环并执行 .replace(key,value,n+1) 而我忘了把它放在那里
    猜你喜欢
    • 2022-11-24
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2021-01-02
    • 2022-01-15
    • 1970-01-01
    • 2018-03-08
    • 2014-03-27
    相关资源
    最近更新 更多