让我们先了解一下实际问题:
示例提示:
对于这些类型的列表问题,有一个模式:
所以假设你有一个列表:
a=[(2006,1),(2007,4),(2008,9),(2006,5)]
并且您想将其转换为 dict 作为元组的第一个元素作为键和元组的第二个元素。类似:
{2008: [9], 2006: [5], 2007: [4]}
但是有一个问题,您还希望那些具有不同值但键相同的键,例如 (2006,1) 和 (2006,5) 键相同但值不同。您希望这些值仅附加一个键,因此预期输出:
{2008: [9], 2006: [1, 5], 2007: [4]}
对于这种类型的问题,我们会这样做:
首先创建一个新的字典然后我们遵循这个模式:
if item[0] not in new_dict:
new_dict[item[0]]=[item[1]]
else:
new_dict[item[0]].append(item[1])
所以我们首先检查 key 是否在新的 dict 中,如果已经存在则将重复键的值添加到它的值中:
完整代码:
a=[(2006,1),(2007,4),(2008,9),(2006,5)]
new_dict={}
for item in a:
if item[0] not in new_dict:
new_dict[item[0]]=[item[1]]
else:
new_dict[item[0]].append(item[1])
print(new_dict)
您的实际问题解决方案:
list_1=[["hello","me.txt"],["good","me.txt"],["good","money.txt"], ["rep", "money.txt"]]
no_dublicates={}
for item in list_1:
if item[0] not in no_dublicates:
no_dublicates[item[0]]=["".join(item[1:])]
else:
no_dublicates[item[0]].extend(item[1:])
list_result=[]
for key,value in no_dublicates.items():
list_result.append([key,value])
print(list_result)
输出:
[['hello', ['me.txt']], ['rep', ['money.txt']], ['good', ['me.txt', 'money.txt']]]