gpt4 book ai didi

python - 根据特定元组值删除列表中的元素

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:26 24 4
gpt4 key购买 nike

所以我想要一个列表,其中的元素在遍历时根据特定的元组值添加和替换。

我尝试了一些基本逻辑来删除以前的元素,以便用新元素“替换”它,但是旧元素似乎没有被删除。

 a = [['a','1','f'],['a','2','f'],['a','3','t'],['b','4','f'],['b','5','t'],['c','6','f']]


z = []
z.append(a[0])

for i in range(1, len(a)):
if str(a[i]).split(',')[2] == 't' and str(a[i]).split(',')[0] == str(a[i-1]).split(',')[0]:
del z[i]
z.append(a[i])
elif a[i] not in z:
z.append(a[i])

所以这里我有一个列表“a”,列表中有一些元组值。某些值 (a,b,c) 可能重复,并具有相应的值(f 或 t)。我想要的是将这些元组添加到“z”中(如果尚不存在),然后如果我找到一个存在且具有相应值“t”的元组,我将摆脱旧的并用它替换它。

所以z的最终输出应该是:

 ['a','3','t'], ['b','5','t'],['c','6','f']

我们遍历 'a',看到 ['a','1','f'] 最初不在 'z' 中。我们添加它并继续遍历。然后我们看到第 3 个元素有 ['a','3','],所以我们删除原来带有 'f' 的元素并替换为 't'。我们对“b”也这样做,对于“c”,没有对应的“t”值,所以我们保留它。

感谢您的帮助。

最佳答案

你可以用 dict 很简单地做到这一点:

>>> a = [['a','f'],['a','f'],['a','t'],['b','f'],['b','t'],['c','f']]
>>> [*dict(a).items()]
[('a', 't'), ('b', 't'), ('c', 'f')]

在旧版本的 Python (<= 3.6) 中,使用 collections.OrderedDict 执行相同的操作。

从评论中添加: dict() constructor将(在其他选项中)一个元组迭代器作为参数,并按照出现在字典项中的顺序解析它们。字典键必须都是唯一的,因此这会将您的前三个元素全部解析为键 my_dict['a'],使值等于最后一个键 'a'已读取,或 my_dict['a'] = 't'。与 'b''c' 相同。然后将保留在字典中的值解压缩到一个列表中。如果它是您要保留的输入列表中每个键的最后一项,这应该可以工作。

关于python - 根据特定元组值删除列表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57362605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com