我有一个列表列表(称为all_data):
[ [142864, bob, 428, robert], [642899, gretchen, 999, siobhan], [999644, nancy, 899, joseph] ]
我需要确定第3列中是否有特定值,但请确保该值与其他任何列都不匹配。
示例:
428 =真
999 =真
899 =真实
142 =假
289 =假
864 =假
我尝试使用:
if any(value in row for row in all_data):
print("found {} in column three".format(value))
但是那会在任何列中找到值(我认为)。
我尝试了多种其他方法来对if语句中的“值”进行下标,但它要么无效,要么生成错误。我也尝试过使用索引函数,但不确定执行是否正确。
答案 0 :(得分:0)
如果我正确理解,则需要一个函数来检查2D列表的3列中是否存在值。如果仅存在一次 ,则返回True。否则返回False。
def occursOnce(value, all_data):
# Create an array of the third column items
third = [t[2] for t in all_data]
# Check the number of occurrences of the value
return third.count(value) == 1
答案 1 :(得分:0)
a = [ [142864, 'bob', 428, 'robert'], [642899, 'gretchen', 999, 'siobhan'], [999644, 'nancy', 899, 'joseph'] ]
value = 428
for x in a:
if x[2] == value:
print(True)
使用熊猫:
df=pd.DataFrame(data=a)
df[df[2]==value]
答案 2 :(得分:0)
有一个很短的解决方案:
nums = [[1,2,3],[4,5],[6,7,8,9]]
def in_list(n,lst):
return any([any([i==n for i in row])for row in lst])
in_list(4,nums)
#returns True
in_list(11,nums)
#returna False
如果列表包含True,则any()返回True,否则返回False。 剩下的就是列表理解。