【发布时间】:2014-07-18 18:42:28
【问题描述】:
我有一个dict,其中包含另一个dict
d1 = {'a':{'p':1, 'q':2, 'r':'abc'},
'b':{'p':5, 'q':6, 'r':["google", "pypi.org"]}
}
url1 = "https://google.com"
url2 = "https://abc.com"
现在我想做的是从dict values 中检查r 的值,但我不想要任何代码冗余。这怎么可能?
我现在正在做的是:-
for k, v in d1.iteritems():
if isinstance(v['r'], list):
for l in v['r']:
if url1.find(l):
..Do something..
else:
continue
else:
if url1.find(v['r'):
..Do Something same as above..
else:
continue
现在问题出现在相同的Do something重复2次,有没有办法解决冗余用理解或任何其他方法,除了函数制作和调用 .
编辑——代码已经在一个大的函数定义中,所以除了创建另一个函数并调用它之外,请提供其他解决方案。
【问题讨论】:
-
这就是发明函数的目的。只需像
def do_something(): ..Do something..那样包装..Do something..。我不明白except function部分。 -
@freakish- 问题是下面的代码已经在一个函数中并且它正在返回一些东西
-
所以?您可以在函数内部定义函数(如有必要,例如,如果
do something取决于上下文)然后调用它们。它是 Python。 -
@freakish- 函数会变慢,这是我不想要的,请提供除制作函数之外的解决方案。
-
什么?那么慢呢?创建和调用函数的开销可以忽略不计。这种微优化只是浪费时间。您在这里有一个优雅的解决方案。
标签: python dictionary dictionary-comprehension