Skip to main content
 首页 » 编程设计

python之在 Python 中用 dict 替换嵌套列表中的值

2025年05月04日11yyy_WW

我有一个嵌套列表:

my_list = ['a','b','c','dog', ['pig','cat'], 'd'] 

和一个字典:

my_dict = {'dog':'c','pig':'a','cat':'d'} 

我想使用字典,以便得到一个列表:

new_list = ['a', 'b', 'c', 'c', ['a', 'd'], 'd'] 

我试过类似的方法:

new_list = [] 
for idx1, item1 in enumerate(my_list): 
    for idx2, item2 in enumerate(item1): 
        new_list[idx1][idx2] = my_dict[item2] 

但是当 dict 中不存在 item2 时,我得到一个错误。有更好的方法吗?

请您参考如下方法:

您可以编写一个简单的递归函数,使用列表理解来生成结果。如果列表中的项目是一个列表,则递归,否则使用 dict.get使用默认参数转换项目:

my_list = ['a','b','c','dog', ['pig','cat'], 'd'] 
my_dict = {'dog':'c','pig':'a','cat':'d'} 
 
def convert(l, d): 
    return [convert(x, d) if isinstance(x, list) else d.get(x, x) for x in l] 
 
print(convert(my_list, my_dict)) 

输出:

['a', 'b', 'c', 'c', ['a', 'd'], 'd']