gpt4 book ai didi

python - 制作 mydict ["foo/bar"] 查找 mydict ["foo"] ["bar"]

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:54 25 4
gpt4 key购买 nike

我有一个嵌套的字典

root ={
'user':{
'Johnson':{
'incoming':2000,
'family' :4,
'play':None
}
'Smith':{
'incoming':17000,
'family' :1,
'play':False
}
}
}

我可以访问任何记录,但只能使用大量语法:root['user']['Smith']['play']

我想以某种方式扩展语法,以便能够这样做:

print "Johnson incoming", root['/user/Johnson/incoming']
root['/user/Smith/play'] = True

区分一些潜在的重复:

最佳答案

这样的事情怎么样:

class Foo(dict):
def __setitem__(self, key, value):
parts = key.split('/', 1)
if len(parts) == 2:
if parts[0] not in self:
self[parts[0]] = Foo()
self[parts[0]].__setitem__(parts[1], value)
else:
super(Foo, self).__setitem__(key, value)

def __getitem__(self, key):
parts = key.split('/', 1)
if len(parts) == 2:
return self[parts[0]][parts[1]]
else:
return super(Foo, self).__getitem__(key)

你可以这样使用它:

In [8]: f = Foo()

In [9]: f['a/b/c'] = 10

In [10]: f['a/b/c']
Out[10]: 10

关于python - 制作 mydict ["foo/bar"] 查找 mydict ["foo"] ["bar"],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42603914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com