迭代python2d列表以查找值

2024-10-01 13:39:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试迭代python2d列表。当算法在列表上迭代时,它将把键添加到一个新列表中,直到检测到一个新值为止。然后对该列表应用一个操作,然后清空该列表,以便可以再次使用,如下所示:

original_list = [('4', 'a'), ('3', 'a'), ('2', 'a'), ('1', 'b'), ('6', 'b')]

当算法读取original_list时,它应该计算每个对象的第二个值,并解密它是否与前一个值不同;如果不是,则将其添加到临时列表中。你知道吗

这是psedo代码

temp_list = []
new_value = original_list[0][1] #find the first value

for key, value in original_list:
    if value != new_value:
        temp_list.append(new_value)

应输出

temp_list = ['4', '3', '2']

Tags: the对象代码算法列表newvaluefind
3条回答

我不完全确定你在问什么,但我认为^{}可以帮助你:

>>> from itertools import groupby
>>> original_list = [('4', 'a'), ('3', 'a'), ('2', 'a'), ('1', 'b'), ('6', 'b')]
>>> [(zip(*group)[0], k) for k, group in groupby(original_list, key=lambda x: x[1])]
[(('4', '3', '2'), 'a'), (('1', '6'), 'b')]

它的作用是:用key=lambda x: x[1]将列表中的项按其值分组,并用(zip(*group)[0], k)获取与一个值对应的键元组。你知道吗

temp_list = []
prev_value = original_list[0][1]

for key, value in original_list:
    if value == prev_value:
        temp_list.append(key)
    else:
        do_something(temp_list)
        print temp_list
        temp_list = [key]
    prev_value = value

do_something(temp_list)
print temp_list

# prints ['4', '3', '2']
# prints ['1', '6']

如果“键”本身不重复,您可以使用^{}根据键对值进行“排序”,然后提取所需的内容

from collections import defaultdict
ddict = defaultdict(list)
for v1, v2 in original_list:
    ddict[v2].append(v1)

ddict值现在都是temp_list

>>> ddict["a"]
['4', '3', '2']

相关问题 更多 >