【问题标题】:Wildcard for nested list-query嵌套列表查询的通配符
【发布时间】:2014-03-26 14:10:00
【问题描述】:

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

1) 有直接的方法吗?

2) 我尝试了以下方法:

for i in randomlist:
    if [i,randomlist.count(i)] in list1:

有没有办法用通配符替换randomlist.count(i)?我试过*,%,...,,但没有一个效果很好。有任何想法吗? 提前致谢!

【问题讨论】:

  • 你能举个输入输出的例子吗?
  • 你能添加一个随机列表的例子和想要的输出吗?很难理解你需要什么
  • 输入显示带有数字的嵌套列表及其子列表中的计数:[[86, 4], [67, 1], [89, 1],...] 输出:我需要知道是否一个带有计数的数字已经在列表中(为了不第二次添加它),但在 for 循环期间计数是未知的
  • 字典可能更适合记录数字。

标签: python list nested wildcard


【解决方案1】:

我想你想要的是:

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

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

【讨论】:

  • 该语法是非法的。我想你想删除in
  • 为什么是非法语法?我已经在有和没有in 的情况下运行了程序,对于没有它的情况,Python 显示了一个语法错误。
  • @user3017048 iCodez 指的是另一个 in,后来我已经删掉了。
【解决方案2】:

看来这是真正的问题:

input 显示嵌套列表,其中包含数字及其在子列表中的计数: [[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)

除非现在号码已经存在,否则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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多