我当前的代码如下所示:
def my_func(target_user_id):
for user_id in user_dictionary:
if(user_id != target_user_id):
#do something
我可以在 python 中做一些看起来像下面的事情吗?
def my_func(target_user_id):
for user_id != target_user_id in user_dictionary:
#do something
因此,我们可以避免一种明显的条件块。感谢您的投入。
你的代码没问题。如果您希望避免循环中的测试,您有 2 个选项:
1(循环生成器理解可以做到这一点。它为此创建了第二个循环...
for user_id in (x for x in user_dictionary if x != target_user_id):
2(最好使用filter
来创建非原生python循环
for user_id in filter(lambda x: x != target_user_id, user_dictionary):
...
但它迫使创建一个lambda
.
因此,所有方法都需要与数据一起计时,以选择最有效的方法。
如本问题所示,您可以使用以下内容:
def my_func(target_user_id):
for user_id in {k: v for k, v in user_dictionary.iteritems() if k != target_user_id}:
#do something
或者,如果您使用的是 Python 3:
def my_func(target_user_id):
for user_id in {k: v for k, v in user_dictionary.items() if k != target_user_id}:
#do something
因此,您的字典在循环之前会被过滤,因此您无需检查user_id
是否不是实际循环中的target_user_id
。