我当前的代码如下:
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
因此,我们可以避免一种明显的条件阻塞。感谢您的投入。
答案 0 :(得分:4)
您的代码还可以。如果您想避免循环测试 ,则有两种选择:
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
。
因此,所有方法都需要与您的数据同步,以选择最有效的方法。
答案 1 :(得分:0)
如this Question中所示,您可以使用类似以下内容的
: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
。