在另一个列表中添加重复项
Add the duplicate in another list
我想将一个列表中的重复项放在另一个列表中。在下面的示例中,我试图创建一个列表 red_dup
,其中包含每个包含重复的 'red' id 的项目。同样,我想对 food_dup
列表中的每种食物执行相同的操作。
我有:
values = [[1, 'red1', 'food4'], [1, 'red2', 'food4'], [1, 'red1', 'food9']]
我要的结果:
red_dup = [[1, 'red1', 'food4'], [1, 'red1', 'food9']]
food_dup = [[1, 'red1', 'food4'], [1, 'red2', 'food4']]
在我的代码中,“值”来自 class 的生成器函数。
函数returns这些values.
1为距离,红色或蓝色为实体与食物的距离
This是什么代码returns。红色下划线为X、Y坐标。
您可以使用字典来存储和过滤重复值
from collections import defaultdict
res = defaultdict(list)
for item in values:
_, color, food = item
res[color].append(item)
res[food].append(item)
[v for v in res.values() if len(v) > 1]
结果:
[[[1, 'red1', 'food4'], [1, 'red1', 'food9']],
[[1, 'red1', 'food4'], [1, 'red2', 'food4']]]
这是我的建议:
values = [[1, 'red1', 'food4'], [1, 'red2', 'food4'], [1, 'red1', 'food9']]
red_dup = []
food_dup = []
for i in values:
red=[k for k in values if k[1]==i[1]]
if len(red)>1:
red_dup.extend(red)
food = [k for k in values if k[2]==i[2]]
if len(food)>1:
food_dup.extend(food)
red_dup=sorted(red_dup, key=lambda x: [x[1], x[2]])[::2]
food_dup=sorted(food_dup, key=lambda x: [x[2], x[1]])[::2]
>>>print(red_dup)
#[[1, 'red1', 'food4'], [1, 'red1', 'food9']]
>>>print(food_dup)
#[[1, 'red1', 'food4'], [1, 'red2', 'food4']]
我想将一个列表中的重复项放在另一个列表中。在下面的示例中,我试图创建一个列表 red_dup
,其中包含每个包含重复的 'red' id 的项目。同样,我想对 food_dup
列表中的每种食物执行相同的操作。
我有:
values = [[1, 'red1', 'food4'], [1, 'red2', 'food4'], [1, 'red1', 'food9']]
我要的结果:
red_dup = [[1, 'red1', 'food4'], [1, 'red1', 'food9']]
food_dup = [[1, 'red1', 'food4'], [1, 'red2', 'food4']]
在我的代码中,“值”来自 class 的生成器函数。
函数returns这些values.
1为距离,红色或蓝色为实体与食物的距离
This是什么代码returns。红色下划线为X、Y坐标。
您可以使用字典来存储和过滤重复值
from collections import defaultdict
res = defaultdict(list)
for item in values:
_, color, food = item
res[color].append(item)
res[food].append(item)
[v for v in res.values() if len(v) > 1]
结果:
[[[1, 'red1', 'food4'], [1, 'red1', 'food9']],
[[1, 'red1', 'food4'], [1, 'red2', 'food4']]]
这是我的建议:
values = [[1, 'red1', 'food4'], [1, 'red2', 'food4'], [1, 'red1', 'food9']]
red_dup = []
food_dup = []
for i in values:
red=[k for k in values if k[1]==i[1]]
if len(red)>1:
red_dup.extend(red)
food = [k for k in values if k[2]==i[2]]
if len(food)>1:
food_dup.extend(food)
red_dup=sorted(red_dup, key=lambda x: [x[1], x[2]])[::2]
food_dup=sorted(food_dup, key=lambda x: [x[2], x[1]])[::2]
>>>print(red_dup)
#[[1, 'red1', 'food4'], [1, 'red1', 'food9']]
>>>print(food_dup)
#[[1, 'red1', 'food4'], [1, 'red2', 'food4']]