我想有一个系统,分配不同的命令到不同的类别
这就是我们获取命令的方式:
commands = []
for k, v in config['commands'].items():
commands.append(config['commands'][k]['command'])
有一个.yaml文件,其中每个命令都有不同的属性。一个命令和一个类别:
command_one:
category: "Information"
command: "info"
command_two:
category: "Owneronly"
command: "ban"
command_two:
category: "Owneronly"
command: "kick"
现在,我想在如下所示的集合中根据命令的类别对命令进行排序:
sortedCommands = {"Owneronly": ["ban", "kick"], "Information": ["info"]}
编辑:您可以通过以下命令获取类别:
for k, v in config['commands'].items():
commands.append(config['commands'][k]['category'])
像这样的方法应该会奏效:
我个人不会在这里使用“排序”这个词,因为这里没有排序。这个操作只是重塑数据的形状——我更喜欢像
commands_by_category
这样的名称。当然,你可以随意使用任何你想要的名字这是一种有点冗长(为了清楚起见)的方法:
注意:^{} 在列表上工作到位,因此您必须拉出当前列表,追加并重新分配它
另一个更简洁的选项是按行为分组:
这需要一点时间来解包,但它的作用如下:
lambda
。这是自然的字母数字排序李>这里有一个小问题,它返回每个原始项目的完整dict,因此我们必须清理一些信息:
所有这些工作都是针对每个类别项,使用列表理解,获取字典列表,只保留命令名
行动中的完整示例:
这种方法虽然更密集,但功能更强大,并且利用了Python核心库。因此,我敢打赌它会更快
相关问题 更多 >
编程相关推荐