我正在研究包含键和值的字典,键是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。
答案 0 :(得分:1)
答案 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)
首先,从不隐藏内置函数:使用d
或dict_
代替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