检查2d列表(列表列表)的特定列中是否存在值

时间:2019-08-08 21:23:51

标签: python-3.x list

我有一个列表列表(称为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语句中的“值”进行下标,但它要么无效,要么生成错误。我也尝试过使用索引函数,但不确定执行是否正确。

3 个答案:

答案 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。 剩下的就是列表理解。