我有一个如下的列表。
mylist =
[
[
[
"chocolate_pudding",
920.8000000000001
],
[
"caramel_pudding",
345.59999999999997
],
[
"pudding",
248.0
],
[
"banana_pudding",
27.599999999999998
]
],
[
[
"biscuits",
190.8
],
[
"chocolates",
33.599999999999994
],
[
"chocolate_pudding",
920.8000000000001
]
],
[
[
"tiramusu",
145.8
]
],
[
[
"cakes",
139.29999999999998
]
],
[
[
"butter_cakes",
133.0
]
],
[
[
"chocolate_pudding",
920.8000000000001
]
]
]
我想查找在列表中出现多次的元素(例如,["chocolate_pudding", 920.8000000000001]
),并删除重复的元素,同时保留第一个条目。
因此,我的输出应该如下所示。
mylist =
[
[
[
"chocolate_pudding",
920.8000000000001
],
[
"caramel_pudding",
345.59999999999997
],
[
"pudding",
248.0
],
[
"banana_pudding",
27.599999999999998
]
],
[
[
"biscuits",
190.8
],
[
"chocolates",
33.599999999999994
]
],
[
[
"tiramusu",
145.8
]
],
[
[
"cakes",
139.29999999999998
]
],
[
[
"butter_cakes",
133.0
]
]
]
我一直在尝试的代码如下。
mylist_copy = mylist
for item in mylist:
myindex = mylist.index(item)
#print(item)
for single_item in item:
#print(single_item)
for item_copy in mylist_copy:
if mylist_copy.index(item_copy) != myindex:
if single_item in item_copy:
print(single_item)
因为它有很多for循环,我想寻找一种高效的方法来完成它。注意:我也尝试过;
mylist_copy = mylist
for item in mylist:
myindex = mylist.index(item)
for item_copy in mylist_copy:
if mylist_copy.index(item_copy) != myindex:
print(set(item).intersection(item_copy))
然而,交集不支持列表。
在Python中是否有一种简单快捷的方法?
mylist_copy = mylist
并没有真正复制列表,因为在 Python 中,列表是可变对象。改变mylist
也会改变mylist_copy
。 - Arne