【问题标题】:Is there a way to catch this unexpected value有没有办法捕捉这个意想不到的价值
【发布时间】:2021-11-29 12:09:52
【问题描述】:
[(9, '['), (25, ']'), (442, '['), (460, ']'), (558, '['), (576, ']'), (608, ']')]

在这个元组列表中,我最终试图找到“]”的键。 如果你仔细看看值是这样的;

[ => ] => [ => ] => [ => ] => [ => ]

但到了最后一步;

] => ]

当这个意想不到的值出现时,我想找钥匙。 我该怎么做?

【问题讨论】:

  • 那不是字典。这是一个元组列表
  • 已更正,对此感到抱歉。

标签: python python-3.x dictionary


【解决方案1】:

这是一个典型的括号匹配练习,使用堆栈的概念很容易解决。

from collections import deque

brackets = {"[": "]"}
stack = deque()

for item in data:
    val, bracket = item
    if bracket in brackets:
        stack.append(bracket)
    else:
        try:
            openb = stack.pop()
        except IndexError:
            print(val)
        if brackets[openb] != bracket:
            print(val)

>> 608

【讨论】:

    【解决方案2】:

    我认为您正在寻找这样的东西:

    from itertools import cycle
    
    L = [(9, '['), (25, ']'), (442, '['), (460, ']'), (558, '['), (576, ']'), (608, ']')]
    c = cycle(['[', ']'])
    
    for t in L:
        if t[1] != next(c):
            print(t[0])
            break
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 2021-08-28
      • 2013-05-21
      • 1970-01-01
      相关资源
      最近更新 更多