我有一个嵌套列表,我想检查i
是否包含在我的列表的最低级别(i
是两个元素中的第一个"子列表"。)
1)有直接的方法吗?
2)我尝试了以下方法:
for i in randomlist:
if [i,randomlist.count(i)] in list1:
有没有办法用通配符替换randomlist.count(i)
?我试过了*,%,...,
,但其中没有一个效果很好。有任何想法吗?
提前谢谢!
答案 0 :(得分:1)
我认为你想要的是:
if any(l[0] == i for l in list1):
这将仅检查每个子列表中的第一项,这实际上与拥有通配符的第二个元素相同。
答案 1 :(得分:1)
这似乎是实际问题:
输入显示带有数字的嵌套列表及其在子列表中的计数: [[86,4],[67,1],[89,1],...]输出:我需要知道是否a 其计数的数字已经在列表中(为了不添加它 第二次),但在for循环期间计数未知
有两种方法可以解决这个问题。首先,如果列表没有重复项,只需将其转换为字典:
numbers = dict([[86,4],[67,1],[89,1]])
现在每个数字都是键,并计算一个值。接下来,如果您想知道字典中的数字不是,您可以通过多种方式实现这一目标:
# Fetch the number
try:
count = numbers[14]
except KeyError:
print('{} does not exist'.format(14))
# Another way to write the above is:
count = numbers.get(14)
if not count:
print('{} does not exist'.format(14))
# From a list of a numbers, add them only if they don't
# exist in the dictionary:
for i in list_of_numbers:
if i not in numbers.keys():
numbers[i] = some_value
如果原始列表中已经存在重复项,您仍然可以将其转换为字典,但如果要保留数字的所有值,则需要做一些额外的工作:
from collections import defaultdict
numbers = defaultdict(list)
for key,value in original_list:
numbers[key].append(value)
现在,如果您有重复的数字,它们的所有值都存储在列表中。你仍然可以遵循相同的逻辑:
for i in new_numbers:
numbers[i].append(new_value)
现在,如果该号码已存在,则new_value
只会添加到现有值列表中。
最后,如果第一个号码不存在,如果你想要做的只是添加到列表中:
numbers = set(i[0] for i in original_list)
for i in new_numbers:
if i not in numbers:
original_list += [i, some_value]