【发布时间】:2020-08-20 11:36:36
【问题描述】:
我正在尝试将具有预定义 RAID 配置的字典与包含物理磁盘布局的字典匹配。
raid_config =
{ 'server1': [{'name' : 'data', 'disks' : 3, 'block' : 300}],
'server2': [{'name' : 'data', 'disks' : 8, 'block' : 2200}],
'server3': [{'name' : 'data', 'disks' : 2, 'block' : 300}, {'name' : 'data2', 'disks' : 2, 'block' : 300}, {'name' : 'data3', 'disks' : 2, 'block' : 1800}, {'name' : 'data', 'disks' : 8, 'block' : 300}],
'server4': [{'name' : 'data', 'disks' : 3, 'block' : 300}, {{'name' : 'data2', 'disks' : 8, 'block' : 880}]
}
disks =
{300: ['bay0', 'bay1', bay10'], 880: ['bay2', 'bay3', 'bay4', 'bay5', 'bay6', 'bay7', 'bay8', 'bay9']}
之前我写了一个理解,总结了 RAID 配置和物理磁盘的磁盘大小并匹配了它们。这不再起作用,因为这会导致不同布局的多个匹配项。
print({sum(v['disks']*v['size'] for v in vs) : k for k, vs in raid_config.items()}.get(sum(k*v for k,v in {k : len(v) for k,v in disks.items()}.items())))
-->
server4
我正在努力想出一种简约的方法来获得精确匹配。这里最好的方法是什么?
【问题讨论】:
-
看来
disks是个集合吧? -
@jizhihaoSAMA 是一个以size为key,value为list的dict
-
这并没有真正回答这个问题,但我认为现在是建立一个合适的模型而不是使用它们之间隐含关系的字典的正确时机。
标签: python list-comprehension dictionary-comprehension