假设我有一个字典,其中包含需要以某种方式进行分析或“修复”的项:
testDict = {'05071': ['Clarksville*050112', 'Coal Hill*050315', 'Hartman*050251', 'Johnson County*050441'], '41067': ['Beaverton ***410240', 'Forest Grove ***410241', 'Hillsboro ***410243', 'King City ***410269', 'North Plains ***410270', 'Sherwood ***410273', 'Tualatin ***410277'],...}
我想将任何具有“***”的值列表项替换为“*”:
for k, v in testDict.items():
for item in v:
if " ***" in item:
item = item.replace(" ***", "*")
例如,它将返回一个项:'Sherwood*450184'
,而不是'Sherwood ***410273'
。我现在的问题是,如何在{
item
变量只保存testDict
中每个项的值的副本,因此为item
分配不同的值对testDict
中的相应项没有影响。您应该通过索引为testDict
指定一个新值:您需要:
list
,并使用它一次替换v
的所有内容,或者v
前者相当简单:
分配给}是必要的;没有它,您只需将
v[:]
将v
的全部内容替换为新构造的list
(然后丢弃)。{v
重新绑定到一个新的list
,但唯一的list
将保持不变后者是对代码的较小更改:
或者,如果需要将
item
用于其他目的,可以执行以下操作:因此,您可以继续使用
item
的新值,而无需重复索引v
注意,列表理解对于方法#1并不是绝对必要的(您可以通过手动
append
以任何您喜欢的方式创建一个全新的list
,然后执行v[:] = newlist
),但是v
的内容被替换为原始v
的简单转换,这看起来更干净,而且很明显相关问题 更多 >
编程相关推荐