如何将 list1 的元素分配给 list2 中的元素并将其替换为 list2 的分配元素?

我有两个列表如下:


List1 = ["Steel", "ReinfSteel", "Concrete", "Wood", "Aluminium"]


List2 = ["CONCDC", "CONCR", "SOLROC", "REINFO", "STEEDC", "MCSTEL", "COMPOS", "INTERF", "MASSEL", "SPRING", "FLUSTR", "COMSRF"]

我想将List1其中的数据与其中的数据进行匹配List2,如下所示:


钢 = MCSTEL

ReinfSteel = REINFO ...等等...

我必须用 python 编写代码,如下所述:如果List1包含,STEEL则将其替换为MCSTELin ,并在新变量中List2返回新替换的(即在本例中)。MCSTEL


我是 Python 的新手并且还在学习,所以如果这个问题太基础而不能在这里问,请原谅。


所以我试图将数据从一个软件的 JSON 文件导入到另一个软件的 Python 脚本。数据相似但语法不同,因此我必须将数据从 JSON 代码映射到 Python。我已经使用下面的代码尝试对单一材料进行此操作,但我需要一个有助于涵盖 List2 中给出的所有材料的代码:


KMaterial = []

for materialfamily in data['Model']['elems']:

    KMaterial.append( materialfamily['grass_element_']['crosec_']['material_' ['family_'] )

print(KMaterial)

DMaterial  = ["CONCDC", "CONCR", "SOLROC", "REINFO", "STEEDC", "MCSTEL", "COMPOS", "INTERF", "MASSEL", "SPRING", "FLUSTR", "COMSRF"]

d = {"Steel": "MCSTEL", "ReinfSteel": "REINFO", "Concrete": ""}

new_list = [d[i] if i in d else i for i in KMaterial]

print(new_list)

提前致谢!


RISEBY
浏览 110回答 2
2回答

缥缈止盈

由于您是 Python 的新手,我不想让答案复杂化。为了让您开始了解一些基础知识,这里有一种查看解决方案的方法。您可以使用 if 语句来检查您想要的每个值。然后用新值替换该值。#you want to iterate through list1 and for each value in list1,#you want to check if it meets your criteria#since you need the index and value, use enumeratefor i,val in enumerate(list1):    #if value is 'steel' you want to replace with 'MCSTEL'    if list1[i].lower() == 'steel':        list1[i] = 'MCSTEL'print (list1)如果要替换的项目不止一项,则可以有多个 if 语句。#you want to iterate through list1 and for each value in list1,#you want to check if it meets your criteria#since you need the index and value, use enumeratefor i,val in enumerate(list1):    #if value is 'Steel' you want to replace with 'MCSTEL'    if val.lower() == 'steel':        list1[i] = 'MCSTEL'    #if value is 'ReinfSteel' you want to replace with 'REINFO'    if val.lower() == 'reinfsteel':        list1[i] = 'REINFO'如果您熟悉字典,则可以使用字典来遍历列表。首先你需要定义字典。然后遍历列表以将与字典中的键匹配的每个元素替换为字典中的值。#define your dictionary with key value pairs#key is the value you want to search in list1#value is the new value you want to stored = {'steel':'MCSTEL','reinfsteel':'REINFO'}#you want to iterate through list1 and for each value in list1,#you want to check if it meets your criteria#since you need the index and value, use enumeratefor i,val in enumerate(list1):    #check against the keys in the dictionary    if val.lower() in d.keys():        list1[i] = d[val.lower()]如果你了解 python 中的列表理解,那么你可以将上面的循环写在一个语句中:list2 = [d[x.lower()] if x.lower() in d.keys() else x for x in list1]任何一个代码都将替换:['Steel', 'ReinfSteel', 'Concrete', 'Wood', 'Aluminium']到['MCSTEL', 'REINFO', 'Concrete', 'Wood', 'Aluminium']

qq_花开花谢_0

dict您可以为要交换的内容创建一个键值对,然后使用列表理解来创建新列表。下面是一个只有钢的例子。d = {"Steel": "MCSTEL"} new_list = [d[i] if i in d else i for i in List1]"Concrete": "CONCR"如果您想包含其他内容,例如“Concrete”和“CONCR”,您可以在字典中包含键值对d。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python