为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

RISEBY 2023-05-23 16:29:04
我有两个列表如下:List1 = ["Steel", "ReinfSteel", "Concrete", "Wood", "Aluminium"]List2 = ["CONCDC", "CONCR", "SOLROC", "REINFO", "STEEDC", "MCSTEL", "COMPOS", "INTERF", "MASSEL", "SPRING", "FLUSTR", "COMSRF"]我想将List1其中的数据与其中的数据进行匹配List2,如下所示:钢 = MCSTELReinfSteel = 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)提前致谢!
查看完整描述

2 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

由于您是 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 enumerate

for 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 enumerate


for 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 store

d = {'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 enumerate


for 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']


查看完整回答
反对 回复 2023-05-23
?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

dict您可以为要交换的内容创建一个键值对,然后使用列表理解来创建新列表。下面是一个只有钢的例子。

d = {"Steel": "MCSTEL"}
new_list = [d[i] if i in d else i for i in List1]

"Concrete": "CONCR"如果您想包含其他内容,例如“Concrete”和“CONCR”,您可以在字典中包含键值对d


查看完整回答
反对 回复 2023-05-23
  • 2 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信