根据列表中的其他元素附加列表,并删除包含项

时间:2018-01-30 11:32:49

标签: python list dictionary nested-lists

假设我有两个这样的列表:

list_all = [[['some_item'],'Robert'] ,[['another_item'],'Robert'],[['itemx'],'Adam'],[['item2','item3'],'Maurice]]

我希望他们的持有人(即“罗伯特”)将这些项目组合在一起,只有当它们位于不同的列表中时。即最终list_all应包含:

list_all = [[['some_name','something_else'],'Robert'],[['itemx'],'Adam'],[['item2','item3'],'Maurice]]

快速有效的方法是什么? 我尝试过不同的方式,但我正在寻找更优雅,更简单的东西。 谢谢

3 个答案:

答案 0 :(得分:4)

这是一个解决方案。通常最好以更结构化的形式存储您的数据,例如字典,而不是从一种列表格式操作到另一种列表格式。

new cassandra.Client({
contactPoints: [ '${azure_vm_ip}' ] })

答案 1 :(得分:0)

你可以试试这个,虽然它与上面的答案非常相似,但你可以不用输入任何东西就可以做到这一点。

list_all = [[['some_item'], 'Robert'], [['another_item'], 'Robert'], [['itemx'], 'Adam'], [['item2', 'item3'], 'Maurice']]

x = {}  # initializing a dictionary to store the data

for i in list_all:
    try:
        x[i[1]].extend(i[0])
    except KeyError:
        x[i[1]] = i[0]

list2 = [[j, i ] for i,j in x.items()]

答案 2 :(得分:0)

list_all = [[['some_item'],'Robert'] ,[['another_item'],'Robert'],[['itemx'],'Adam'],[['item2','item3'],'Maurice']]

dict_value = {}
for val in list_all:
    list_, name = val
    if name in dict_value:
        dict_value[name][0].extend(list_)
    else:      
        dict_value.setdefault(name,[list_, name])
print(list(dict_value.values()))
>>>[[['some_item', 'another_item'], 'Robert'],
 [['itemx'], 'Adam'],
 [['item2', 'item3'], 'Maurice']]