Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于嵌套列表查询的通配符_Python_List_Nested_Wildcard - Fatal编程技术网

Python 用于嵌套列表查询的通配符

Python 用于嵌套列表查询的通配符,python,list,nested,wildcard,Python,List,Nested,Wildcard,我有一个嵌套列表,我想检查I是否包含在列表的最低级别(I是一个“子列表”的两个元素中的第一个) 1) 有没有直接的方法 2) 我尝试了以下方法: for i in randomlist: if [i,randomlist.count(i)] in list1: 有没有办法用通配符替换randomlist.count(i)?我尝试了*,%,…,,但没有一个效果很好。有什么想法吗? 提前谢谢 我想你想要的是: if any(l[0] == i for l in list1): 这将只检查

我有一个嵌套列表,我想检查
I
是否包含在列表的最低级别(
I
是一个“子列表”的两个元素中的第一个)

1) 有没有直接的方法

2) 我尝试了以下方法:

for i in randomlist:
    if [i,randomlist.count(i)] in list1:
有没有办法用通配符替换
randomlist.count(i)
?我尝试了
*,%,…,
,但没有一个效果很好。有什么想法吗?
提前谢谢

我想你想要的是:

if any(l[0] == i for l in list1):

这将只检查每个子列表中的第一项,这实际上与使用通配符第二个元素相同。

这似乎是实际问题:


输入显示子列表中带有数字及其计数的嵌套列表: [86,4],[67,1],[89,1],…]输出:我需要知道 带计数的数字已在列表中(为了不将其添加为 第二次),但在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)
除了现在,如果数字已经存在,
新值
只会添加到现有值列表中

最后,如果您只想在第一个数字不存在时添加到列表中:

numbers = set(i[0] for i in original_list)

for i in new_numbers:
   if i not in numbers:
       original_list += [i, some_value]

你能给出输入和输出的例子吗?你能添加一个随机列表和期望输出的例子吗?很难理解您需要什么输入显示带有数字的嵌套列表及其在子列表中的计数:[[86,4],[67,1],[89,1],…]输出:我需要知道带有计数的数字是否已经在列表中(为了不再次添加它),但是在循环过程中计数是未知的,因为字典可能更适合保存数字计数。这种语法是非法的。我想您想删除中的
。为什么这是非法语法?我在
中运行了有和没有
的程序,对于没有
的情况,Python显示了一个语法错误。@user3017048 iCodez指的是
中的另一个
,后来我将其编辑掉了。