我试图找到类似我现在想问的类似问题。但是,答案并没有真正帮助我。我试图获得价值,但只有一个值,如果价值相同。在这里我的代码:
首先,我有这样的条件
ids_data = []
arr_rest_ids = [('8380128579', 309), ('8380128579', 311), ('8380128579', 310), ('8380222579', 313)]
if arr_rest_ids:
for i in arr_rest_ids:
ids_data.append(i)
我有条件字符串和整数,条件告诉整数有一个值。我试图创建一个条件,如果值相同而不是只获得一个值。
我希望结果如下:
ids_data = [309, 313]
arr_rest_ids = [('8380128579', 309), ('8380128579', 311), ('8380128579', 310), ('8380222579', 313)]
if arr_rest_ids:
for i in arr_rest_ids:
ids_data.append(i)
ids_data变量显示id只是一个不同的值。
答案 0 :(得分:2)
最简单的方法是维护一组您所看到的值:
arr_rest_ids = [('8380128579', 309), ('8380128579', 311), ('8380128579', 310), ('8380222579', 313)]
ids_data = []
seen = set()
# no check needed here. If arr_rest_ids is empty, the loop won't start
for x, y in arr_rest_ids:
if x not in seen:
ids_data.append(y)
seen.add(x)
在Python3中,你也可以使用这个hack在更少的行中实现相同的目标:
seen = set()
ids_data = [seen.add(x) or y for x, y in arr_rest_ids if x not in seen]