gpt4 book ai didi

python - 对于列表中的元组,如果元组的第 3 个元素在字典中,则将元素替换为值

转载 作者:行者123 更新时间:2023-11-28 22:41:54 25 4
gpt4 key购买 nike

我有一个元组列表:

my_list = [(a1, b1, c1), ... , (an, bn, cn)]

我还有一本字典:

my_dict = {x1: y1, ... , xm: ym}

我想创建一个函数,它将根据 my_dict 搜索 my_list 中每个元组的第 3 个元素。如果元组的第三个元素在 my_dict 中,则用它在字典中的值替换该元素,并将这个更新后的元组附加到新列表 new_list 中。如果元组的第3个元素不在my_dict中,则将原元组原样返回给new_list。

例如,如果 c 在字典中的值为 q,那么我想用 q 替换 c:

(a, b, c) ---> (a, b, q)

如果 c 不在字典中,我希望元组保持不变:

(a, b, c) ---> (a, b, c)

我写了一个 for 循环,但不明白为什么它不起作用:

def my_func(a,b):
y = []
for x in a:
if b.get(x[2]) == None:
y.append(x)
else:
y.append((x[0], x[1], b.get(x[2])))
return y

那么我的目标是评估 my_func(my_list, my_dict)。但是,它只返回原始列表 my_list ,没有任何更改。我尝试了其他几种形式,例如“if x[2] in my_dict”等,但没有成功。

如果有任何建议,我将不胜感激!

编辑:

列表和字典的例子是:

my_list = [ (‘string1_1’, 0.3, ‘string2_1’), (‘string1_2’, 0.5, ‘string2_2’), (‘string1_3’, 0.4, ‘string2_3’), (‘string1_4’, 0.65, ‘string2_4’)]

my_dict = {‘string2_1’: ‘string2_1_EDIT’, ‘string2_4’ : ‘string2_4_EDIT’}

最佳答案

你可以将它简化为一个列表表达式:

[(x[0], x[1], b.get(x[2], x[2])) for x in a]

哪个应该有效 - 你能提供一些示例输入吗?

关于python - 对于列表中的元组,如果元组的第 3 个元素在字典中,则将元素替换为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32186087/

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