如何搜索整个列表的第一个单元格,每个列表都是字典中的值?

时间:2019-01-29 11:54:29

标签: python

我正在研究包含键和值的字典,键是ID,每个值是一个列表。我该如何检查诸如“如果列表中的FIRST元素中有6个”之类的条件?

dict_ = {0: [1, 2, 4, 1], 1: [3, 8, 4, 7], 2: [6, 2, 4, 2], 3: [5, 1, 3, 6]}

if 6 in dict_.values[0]():
    print("6 is in the first cell of one of the lists")
    return(True)

这看起来像我想要做的,但语法不正确,并显示“ TypeError对象不可编写子脚本”。我希望只有其中一个列表的[0]上有6时,它才会返回True。

5 个答案:

答案 0 :(得分:1)

您可以将内置函数any用于单线:

any(val[0] == 6 for val in dict.values())

如果任何列表为空或为空,请在末尾添加if val,以提高安全性。

答案 1 :(得分:0)

让我们首先获取dict的值:

dict_ = {0: [1, 2, 4, 1], 1: [3, 8, 4, 7], 2: [6, 2, 4, 2], 3: [5, 1, 3, 6]}

for key, val in dict_.items():
    print(val)

输出:

[1, 2, 4, 1]
[3, 8, 4, 7]
[6, 2, 4, 2]
[5, 1, 3, 6]

现在要检查值(列表)在第一个索引上是否有6

for key, val in dict_.items():  # for each key, val (list) in the dict
    if val[0] == 6:            # [0] for the first index of each list
          print("6 found at the first index in the list: ", val)

输出:

6 found at the first index in the list:  [6, 2, 4, 2]

答案 2 :(得分:0)

答案:

dictionary = {0: [1, 2, 4, 1], 1: [3, 8, 4, 7], 2: [6, 2, 4, 2], 3: [5, 1, 3, 6]}

for key, val in dictionary.items():
    if val[0] == 6:
        print("6 is present at 1 st position :", key,":",val)

输出:

6 is present at 1 st position : 2 : [6, 2, 4, 2]

答案 3 :(得分:0)

首先,从不隐藏内置函数:使用ddict_代替dict作为变量名。其次,请注意dict.values()返回一个 view ,您不能在视图对象上应用__getitem__(或[]),更不用说您没有的方法了不是通过括号调用的。

您可以修改函数并使用简单的迭代:

d = {0: [1, 2, 4, 1], 1: [3, 8, 4, 7], 2: [6, 2, 4, 2], 3: [5, 1, 3, 6]}

def check_value(d, val, pos=0):
    for value in d.values():
        if value[pos] == val:
            return True
    return False

res = check_value(d, 6)  # True

您还可以将any与生成器表达式一起使用:

def check_value_any(d, val, pos=0):
    return any(value[pos] == val for value in d.values())

这是懒惰的,也就是说,如果在任何时候满足条件any都会返回True,而函数返回True。但是,这可能会降低效率,因为生成器会带来额外的开销。

答案 4 :(得分:0)

我不确定您的意思,但我会尽力回答您。

首先,您要像这样遍历字典:

for key, values in d.items():

您还可以根据需要使用d.keys()d.values()

现在,如果您需要查看6是否在字典中任何列表的第一个位置,您可以这样做:

for key, value in d.items():
  if value[0] == 6:
    return True

如果要查看数字6是否出现在(第一个键的)第一个列表中,请执行以下操作:

for value in list(d.keys())[0]:
  if value == 6:
    return True