Lal*_*lit 4 python for-loop list-comprehension list python-3.x
我有一个清单:
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']]
Run Code Online (Sandbox Code Playgroud)
从这里开始,鉴于第一个子列表的值是唯一的,我只想从第一个不同的子列表中获取前 2 个项目。
预期输出:
df = [['apple', 'red'], ['guava', 'green']]
Run Code Online (Sandbox Code Playgroud)
代码到现在:
dummy_list = []
for item in df:
if item[0] not in dummy_list:
dummy_list.append(item[:2])
Run Code Online (Sandbox Code Playgroud)
这不起作用并附加所有元素。请对此提供任何帮助
或者更聪明:使用字典并setdefault只为第一个添加映射
result = {}
for value in df:
result.setdefault(value[0], value[:2])
result = list(result.values())
print(result)
Run Code Online (Sandbox Code Playgroud)
或者您可以记录添加的键的数量以避免重复它们(在单独的列表中)
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']]
Run Code Online (Sandbox Code Playgroud)