我将为用户提供检查多层字典中特定键的能力。我的想法是他们会像这样传递键的路径:
root.subelement1.subelement2.key
这可以是任意长度和深度的字符串。
一旦我从用户那里得到了上面的字符串,我将把它分割并获得每个单独组件的列表:
elements = ['root', 'subelement1', 'subelement2', 'key']
我可以做到这一点。下一步是我卡住的地方。当它的长度任意时,我如何查询由上述指定的字典键?
我的初始想法是做类似于
my_dict[elements[0]][elements[1]]
的事情...但是当用户没有传递我期望的长度时,这种方法无法扩展或工作。在这种情况下,我如何获取任意键深度的数据?
一些例子:
- 用户传递
country.US.NewYork
=> 我查询 `my_dict['country']['US']['NewYork']`
- 用户传递department.accounting
=> 我查询 my_dict['department']['accounting']
- 用户传递id
=> 我查询 my_dict['id']
- 用户传递district.District15.HenryBristow.principal
=> 我查询 my_dict['district']['District15']['HenryBristow']['principal']
current = my_dict; for bit in query.split('.'): current = current[bit]
,当然还要加上缺失检查。 - Paul Panzer