基本上,我正在寻找一种根据特定条件将列表中的项目附加到两个不同列表中的方法。
我有一个相当广泛的 python 3.3 程序来管理在线聊天界面。如果我们有一组用户列表,例如 ['bob', 'joe', 'frank', 'jimmy', 'louis']
,他们要么离线要么离线。我想将所有在线用户附加到一个列表中,将离线用户附加到另一个列表中,所以如果 bob 和 joe 在线,那么他们将被附加到“在线”列表中,其余的将被附加到“离线”列表中.之后,我会做类似的事情:
print('online: %s offline: %s' % (', '.join(online), ', '.join(offline))
如果您能告诉我一种有效的方法,我们将不胜感激。
最佳答案
我会使用 defaultdict(list)
并根据您的标准附加到它 - 这也将很好地扩展到忙碌/离开/免打扰等...,然后通过你想要的状态:
from random import choice
from collections import defaultdict
status_choice = ['online', 'offline']
statuses = defaultdict(list)
for name in ['bob', 'joe', 'frank', 'jimmy', 'louis']:
status = choice(status_choice)
statuses[status].append(name)
print(statuses)
# defaultdict(<type 'list'>, {'offline': ['joe', 'frank', 'jimmy', 'louis'], 'online': ['bob']})
print(statuses['online'])
# ['bob']
您可能还希望考虑使用 set
而不是列表来更快地查找/删除/插入名称,并且它还会阻止重复值的出现。
关于python - 根据条件将项目附加到不同的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17767574/