用Python中字典中的列表值替换字符串

用Python中字典中的列表值替换字符串,python,dictionary,Python,Dictionary,好的,再来一次- 我有这本字典- 此字典是在解析由注释和C结构组成的C文件后创建的,因此对于b/w/中包含的每个注释,都有一个与之相关的结构值。因此,键值对是//:{}希望这有意义 {'': [], '/* JOB_ATR_depend */': ['{ ATTR_c,\n\t\tREAD_WRITE', 'ATR_DFLAG_MOM', 'ATR_DFLAG_ALTRUN,\n ATR_TYPE_STR,\n\t\tNULL_VERIFY_DATATYPE_FUN

好的,再来一次-

我有这本字典-

此字典是在解析由注释和C结构组成的C文件后创建的,因此对于b/w/中包含的每个注释,都有一个与之相关的结构值。因此,键值对是//:{}希望这有意义

{'': [], '/* JOB_ATR_depend */': ['{ ATTR_c,\n\t\tREAD_WRITE', 'ATR_DFLAG_MOM', 'ATR_DFLAG_ALTRUN,\n                ATR_TYPE_STR,\n\t\tNULL_VERIFY_DATATYPE_FUNC,\n                verify_value_checkpoint\n\t},'], '/* ATTR_q */': ['{ ATTR_q,\n                 READ_WRITE', 'ATR_DFLAG_ALTRUN', 'ATR_DFLAG_SELEQ', 'ATR_DFLAG_MOM,\n                 ATR_TYPE_STR,\n                 NULL_VERIFY_DATATYPE_FUNC,\n                 NULL_VERIFY_VALUE_FUNC\n         },'], '/* JOB_ATR_array_indices_submitted */': ['{ ATTR_eligible_time,             \n\t\tNO_USER_SET', 'ATR_DFLAG_SSET', 'ATR_DFLAG_ALTRUN,\n                ATR_TYPE_LONG,\n\t\tverify_datatype_time,\n                NULL_VERIFY_VALUE_FUNC\n        },'], '/* JOB_ATR_eligible_time */': ['{ ATTR_u,\n\t\tREAD_WRITE', 'ATR_DFLAG_SELEQ', 'ATR_DFLAG_SCGALT,\n                ATR_TYPE_ARST,\n\t\tNULL_VERIFY_DATATYPE_FUNC,\n                verify_value_user_list\n        },'], '/* JOB_ATR_exec_host */': ['{ ATTR_depend,                   \n\t\tREAD_WRITE,\n                ATR_TYPE_LIST,\n\t\tNULL_VERIFY_DATATYPE_FUNC,\n                verify_value_dependlist\n\t},'], '/* JOB_ATR_userlst */': ['{ ATTR_a,\n\t\tREAD_WRITE', 'ATR_DFLAG_ALTRUN,\n                ATR_TYPE_LONG,\n\t\tverify_datatype_long,\n                NULL_VERIFY_VALUE_FUNC\n        },'], '/* JOB_ATR_exectime */': ['{ ATTR_exechost,          \n\t\tREAD_ONLY,\n\t\tATR_TYPE_STR,\n\t\tNULL_VERIFY_DATATYPE_FUNC,\n                NULL_VERIFY_VALUE_FUNC\n\t},'], '/* JOB_ATR_array_indices_remaining */': ['{ ATTR_array_indices_submitted,  \n\t\tATR_DFLAG_SvWR', 'ATR_DFLAG_SvRD', 'ATR_DFLAG_Creat', 'READ_ONLY,\n                ATR_TYPE_STR,\n\t\tNULL_VERIFY_DATATYPE_FUNC,\n                verify_value_jrange\n        },']}
现在我正在读这样一个文件-

 for i in temp_file
i、 e逐行处理文件,因此每当遇到这样的注释时

 if re.search('\/*',line)
我会去查字典,看看这个注释是否与我字典中的键匹配

 for i,j in dict.iteritems()
注释将替换为其相应的结构值{}

例如:钥匙

 /* JOB_ATR_depend */ 
遇到一个文件,我希望它被替换为相应的值

{ ATTR_c,\n\t\tREAD_WRITE', 'ATR_DFLAG_MOM', 'ATR_DFLAG_ALTRUN,\n                    ATR_TYPE_STR,\n\t\tNULL_VERIFY_DATATYPE_FUNC,\n                verify_value_checkpoint\n\t},

由于字符串在python中是不可变的,如何用列表替换字符串?

是否要用列表替换键“/*JOB\u ATR\u dependent*/?那么你想把这个列表作为你的dict中的一个键


如果这是你想要的,你不能。列表是可变的,因此不可散列,不能用作dict中的键

我建议在字典中创建一个新的键值对,然后删除与del的原始键值对。

文件有多大?把它全部读入内存是否合理?如果是这样,为什么不起作用呢?我在字典里看到几个字符串。要用列表替换哪个特定字符串?在字典中为键添加值的语法是list[key]=value。如何用列表替换文件中的字符串是一个毫无意义的问题,因此不清楚您在问什么。是否只想用列表的第一个元素替换字符串?列表本身的报告?还有什么?@jedwards-string.replace将不起作用,因为该值将被替换为list@user3203406只要他以某种方式将列表转换为字符串(例如strlist),string.replace就可以正常工作。我认为这根本不是他所要求的。我理解的是,他想用一个file.yes在本例中,/**/comments中的字符串是键,相应的{}结构是值。在文件中的任何地方,将找到特定的注释,该注释将替换为结构,而OP询问的内容不清楚,我不认为是这样的。你可以看到字典已经存在了,它是一个注释行作为键,一个结构作为值,当在文件中遇到特定注释时,它将被相应的结构替换