use*_*200 1 python string dictionary replace list
我有一个嵌套列表:
my_list = ['a','b','c','dog', ['pig','cat'], 'd']
Run Code Online (Sandbox Code Playgroud)
和一个字典:
my_dict = {'dog':'c','pig':'a','cat':'d'}
Run Code Online (Sandbox Code Playgroud)
我想使用dict,这样我得到一个列表:
new_list = ['a', 'b', 'c', 'c', ['a', 'd'], 'd']
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西:
new_list = []
for idx1, item1 in enumerate(my_list):
for idx2, item2 in enumerate(item1):
new_list[idx1][idx2] = my_dict[item2]
Run Code Online (Sandbox Code Playgroud)
但是当我item2
不存在时会收到错误dict
.有一个更好的方法吗?
您可以编写一个简单的递归函数,使用列表推导来生成结果.如果列表中的项目是列表,则递归,否则使用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))
Run Code Online (Sandbox Code Playgroud)
输出:
['a', 'b', 'c', 'c', ['a', 'd'], 'd']
Run Code Online (Sandbox Code Playgroud)