python - 根据条件将项目附加到不同的列表

标签 python list

基本上,我正在寻找一种根据特定条件将列表中的项目附加到两个不同列表中的方法。

我有一个相当广泛的 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/

相关文章:

python - 如何递归地转换类实例的属性

python - 错误: 413 Request Too Large - Python Google Drive API with resumable MediaIoBaseUpload Request

arrays - 将 Python 数据列表转换为 bash 数组

python - 输出出现两次 - 更新发布此问题前 30 分钟提出的问题

c# - 查找列表中最常出现的项目的方法

python - 如何使用2to3就地编辑文件?

Python - OS X 中的屏幕抓取和控制鼠标

python - sqlite3.OperationalError : unable to open database file

python修剪字典列表中的字典

java - 如何将数组的值而不是该数组的位置添加到 ArrayList 中?