假设我有两个这样的列表:
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]]
快速有效的方法是什么? 我尝试过不同的方式,但我正在寻找更优雅,更简单的东西。 谢谢
答案 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']]