如果子列表的第一个元素在Python中是唯一的,则从第一个子列表获取前两项

拉利特:

我有一个清单:

df = [['apple', 'red', '0.2'], ['apple', 'green', '8.9'], ['apple', 'brown', '2.9'], 
      ['guava', 'green', '1.9'], ['guava', 'yellow', '4.9'], ['guava', 'light green', '2.3']]

考虑到第一个子列表的值是唯一的条件,从这里我只想从第一个不同的子列表中获取前2个项目。

预期产量:

df = [['apple', 'red'], ['guava', 'green']]

到目前为止的代码:

dummy_list = []

for item in df:
    if item[0] not in dummy_list:        
        dummy_list.append(item[:2])

这不起作用,并附加所有元素。任何对此的帮助

Azro:

或更聪明:使用dict并setdefault仅添加第一个映射

result = {}
for value in df:
    result.setdefault(value[0], value[:2])
result = list(result.values())

print(result)

或者,您可以对添加的键进行计数以避免重复(在单独的列表中)

keys = set()
result = []
for value in df:
    if value[0] not in keys:
        result.append(value[:2])
        keys.add(value[0])

print(result) # [['apple', 'red'], ['guava', 'green']]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章