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

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

【python】如何把前面3個元素做為key合并多個列表?

【python】如何把前面3個元素做為key合并多個列表?

弒天下 2018-07-29 07:11:11
把列表o中的前三列元素(cmd,opt,xx.x(x)SE)作為key,合并第4列(Catxxxx)的元素。下面的例子是由列表o創建新的列表o_new。o = []a = ['cmd',['opt1','opt2'],'12.2(2)SE','Cat3560']b = ['cmd',['opt1','opt2'],'12.2(2)SE','Cat4500']c = ['cmd',['opt1','opt2','opt3','opt4'],'12.3(2)SE','Cat3560']d = ['cmd',['opt1','opt2','opt3'],'12.4(2)SE','Cat3560']o.append(a)o.append(b)o.append(c)o.append(d)想要的結果:o_new[0] = ['cmd',['opt1','opt2'],'12.2(2)SE',['Cat3560','Cat4500']] → 這個是由a,b合并成的o_new[1] = ['cmd',['opt1','opt2','opt3','opt4'],'12.3(2)SE','Cat3560']o_new[2] = ['cmd',['opt1','opt2','opt3'],'12.4(2)SE','Cat3560']懇請大神不吝賜教!
查看完整描述

1 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

下面的可以實現,可能代碼有點丑:

def combine_list(list1, list2):
    list0 = list1[:]    if list1[0] == list2[0] and list1[1] == list2[1] and list1[2] == list2[2]:
        list_temp = [list1[3], list2[3]]
        list0[3] = list_temp        return list0    else:        passo = []
a = ['cmd', ['opt1', 'opt2'], '12.2(2)SE', 'Cat3560']
b = ['cmd', ['opt1', 'opt2'], '12.2(2)SE', 'Cat4500']
c = ['cmd', ['opt1', 'opt2', 'opt3', 'opt4'], '12.3(2)SE', 'Cat3560']
d = ['cmd', ['opt1', 'opt2', 'opt3'], '12.4(2)SE', 'Cat3560']
o.append(a)
o.append(b)
o.append(c)
o.append(d)

o_new = o[:]

i = 1j = 0for i in range(i, len(o)):
    temp = combine_list(o[j], o[i])    if temp is not None:
        o_new.append(temp)
        o_new.remove(o[j])
        o_new.remove(o[i])    if i == 3:
        j += 1
        i = 1
    if j == 3:        breakprint(o_new)
Result:
[['cmd', ['opt1', 'opt2', 'opt3', 'opt4'], '12.3(2)SE', 'Cat3560'], ['cmd', ['opt1', 'opt2', 'opt3'], '12.4(2)SE', 'Cat3560'], ['cmd', ['opt1', 'opt2'], '12.2(2)SE', ['Cat3560', 'Cat4500']]]


查看完整回答
反對 回復 2018-08-26
  • 1 回答
  • 0 關注
  • 1007 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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