我有一个嵌套列表:
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']
