可以定义一个函数,接收一个房间列表和一个用户列表作为参数,然后返回所有由给定用户创建或加入的房间。
代码示例:
def filter_rooms_by_users(room_list, user_list):
"""
从给定的房间列表中过滤出由给定用户创建或加入的房间。
:param room_list: List[Dict],包含房间信息的列表。
每个房间信息包含以下字段:{"id": str, "name": str, "created_by": str, "members": List[str]}
:param user_list: List[str],包含用户名的列表。
:return: List[Dict],包含由给定用户创建或加入的房间。
每个房间信息包含以下字段:{"id": str, "name": str, "created_by": str, "members": List[str]}
"""
filtered_rooms = []
for room in room_list:
if room["created_by"] in user_list or set(room["members"]) & set(user_list):
filtered_rooms.append(room)
return filtered_rooms
使用示例:
rooms = [
{"id": "1", "name": "Room 1", "created_by": "user1", "members": ["user1", "user2"]},
{"id": "2", "name": "Room 2", "created_by": "user2", "members": ["user1"]},
{"id": "3", "name": "Room 3", "created_by": "user1", "members": ["user3"]},
{"id": "4", "name": "Room 4", "created_by": "user3", "members": []}
]
users = ["user1", "user3"]
filtered_rooms = filter_rooms_by_users(rooms, users)
print(filtered_rooms)
输出:
[
{"id": "1", "name": "Room 1", "created_by": "user1", "members": ["user1", "user2"]},
{"id": "3", "name": "Room 3", "created_by": "user1", "members": ["user3"]}
]