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

2024-09-24 04:30:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两份清单如下:

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

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

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

  1. 钢=MCSTEL
  2. ReinfSteel=REINFO&;等等

我必须用python编写一段代码,如下所述: 如果List1STEEL组成,则将其替换为List2中的MCSTEL,并在新变量中返回新替换的(即MCSTEL

我是Python的新手,还在学习,所以如果这个问题太基本,请原谅

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

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)

提前谢谢


Tags: 数据代码insteellist2concretelist1reinfsteel
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 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'

如果您熟悉字典,您可以使用字典来遍历列表

首先,您需要定义字典。然后遍历列表,用dictionary中的值替换与dictionary中的键匹配的每个元素

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

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

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

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

相关问题 更多 >