亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 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條經驗 獲得超7個贊

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 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號