示例:
我的列表是['tree','world','tre','worl']
我的字典是{'tre':'good','worl':nice}
我的剧本:
def replace(list, dictionary):
for i in list:
for k in dictionary:
list = list.replace(k, dictionary[k])
return list
print replace(input_file,curaw_dict)
但每次收到结果都是这样的:
goode
niced
good
nice
如何让它更准确 使它像
tree
world
good
nice
非常感谢
答案 0 :(得分:0)
for k in dictionary:
不是迭代字典中项目的正确方法。相反,您应该使用enumerate
迭代列表中的项目并在字典中查找它们:
def replace(lst, dictionary):
for k,v in enumerate(lst):
if v in dictionary:
lst[k] = dictionary[v]
return lst
对于列表中的每个项目,k是值的索引,v是值本身。然后检查该值是否在字典中,如果是,则将列表中的值替换为字典中的值。
您也不应该将变量命名为list
,因为这是Python中的保留字。
您也可以使用列表理解:
def replace(lst, dictionary):
return [item if not item in dictionary else dictionary[item] for item in lst]
答案 1 :(得分:0)
Apple Grade C Laptop MacBook MC516LL/A-C
Intel Core 2 Duo P8600 (2.40 GHz)
2 GB Memory
250 GB HDD
13.3" Display
Mac OS X
您不需要迭代字典。替换会执行部分替换,但def replace(list, dictionary):
for idx, val in enumerate(list):
if i in k:
list[idx] = dictionary[list[idx]]
return list
print replace(input_file,curaw_dict)
将检查字典中是否存在密钥。
答案 2 :(得分:0)
'key' in dictionary
是检查dict中是否存在密钥的方法:
def replace(list, dictionary):
new_list = []
for i in list:
if i in dictionary:
new_list.append(dictionary[i])
else:
new_list.append(i)
return new_list
答案 3 :(得分:0)
input_file = ['tree', 'world', 'tre', 'worl']
curaw_dict = {'tre':'good','worl':'nice'}
def replace(list, dictionary):
return [curaw_dict.get(item, item) for item in list]
print replace(input_file,curaw_dict)
答案 4 :(得分:0)
让我们改为列表理解。
replaced_list = [x if x not in my_dict else my_dict[x] for x in my_list]
我想如果你想要一个你可以做的功能:
replace = lambda my_dict, my_list: [x if x not in my_dict else my_dict[x] for x in my_list]
或
def replace(my_list, my_dict):
return [x if x not in my_dict else my_dict[x] for x in my_list]
答案 5 :(得分:0)
>>> li=['tree', 'world', 'tre', 'worl']
>>> di={'tre':'good','worl':'nice'}
>>> print('\n'.join(di.get(e,e) for e in li))
tree
world
good
nice