我正在尝试构建一个函数,以便如果一个密钥已存在于dict或任何属于该dict的子代中,则返回true,我找到了这个解决方案:
def gen_dict_extract(key, var):
if hasattr(var,'iteritems'):
for k, v in var.iteritems():
if k == key:
yield v
if isinstance(v, dict):
for result in gen_dict_extract(key, v):
yield result
elif isinstance(v, list):
for d in v:
for result in gen_dict_extract(key, d):
yield result
但问题是结果是一个生成器怎么做才能在密钥已经存在时变为true而false如果不存在则为false 谢谢
答案 0 :(得分:1)
你应该在try / except块中使用带有version: '3'
services:
api:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ORACLE_CS=Data Source = ip:port/sid;PERSIST SECURITY INFO=True;USER ID=user; Password=password;
- NLS_LANG=.CL8MSWIN1251
ports:
- "5050:80"
networks:
default:
external:
name: nat
个调用的生成器,除了next
:
StopIteration
请注意,此方法将留下" gen"作为一个已经产生的发电机'一旦这样你就需要创建另一个生成器来使用它。
使用它的最佳方式当然是不检查生成器是否为空但处理它的空虚"使用它时。