我有两个列表,我想根据列表的第一个元素进行分组.
list1 = [['1','abc','zef'],['2','qwerty','opo'],['3','lol','pop']]
list2 = [['1','rofl','pole'],['2','sole','pop'],['3','lmao','wtf']]
Run Code Online (Sandbox Code Playgroud)
这里列表中列表中的第一个元素是'1','2'和'3'.
我希望我的最终名单如下: -
Final_List = [['1', 'abc', 'zef', 'rofl', 'pole'], ['3', 'lol', 'pop', 'lmao', 'wtf'], ['2', 'qwerty', 'opo', 'sole', 'pop']]
Run Code Online (Sandbox Code Playgroud)
我使用下面的代码试过这个.
#!/usr/bin/python
list1 = [['1','abc','zef'],['2','qwerty','opo'],['3','lol','pop']]
list2 = [['1','rofl','pole'],['2','sole','pop'],['3','lmao','wtf']]
d = {}
for i in list1:
d[i[0]] = i[1:]
for i in list2:
d[i[0]].extend(i[1:])
Final_List = []
for key, value in d.iteritems():
value.insert(0,key)
Final_List.append(value)
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但我想知道是否有一种简单而清洁的方法
有帮助吗?
我会像你写的那样写一些修改,就像这样
准备一个字典,其中包含与第一个元素对应的第二个位置的所有元素.
d = {}
for items in (list1, list2):
for item in items:
d.setdefault(item[0], [item[0]]).extend(item[1:])
Run Code Online (Sandbox Code Playgroud)然后从字典中获取所有值(Thanks @jamylak):-)
print(d.values())
Run Code Online (Sandbox Code Playgroud)产量
[['3', 'lol', 'pop', 'lmao', 'wtf'],
['1', 'abc', 'zef', 'rofl', 'pole'],
['2', 'qwerty', 'opo', 'sole', 'pop']]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |