Python 将列表设置为dict中具有未知列表元素数的键
有没有办法根据列表设置嵌套键? 我有以下代码:Python 将列表设置为dict中具有未知列表元素数的键,python,list,dictionary,Python,List,Dictionary,有没有办法根据列表设置嵌套键? 我有以下代码: def setDictKeys (dict, atKey, keysList): for key in keysList: dict[atKey][key] = {} 打电话 setDictKeys(dict, ["a", "b"], someKeysList) 我希望字典看起来像这样: dict["a"]["b"]["key from someKeysList"] = {} 谢谢大家! 您可以使用一个循环来迭代atK
def setDictKeys (dict, atKey, keysList):
for key in keysList:
dict[atKey][key] = {}
打电话
setDictKeys(dict, ["a", "b"], someKeysList)
我希望字典看起来像这样:
dict["a"]["b"]["key from someKeysList"] = {}
谢谢大家! 您可以使用一个循环来迭代
atKey
中的各个键,并“深入”嵌套dict
def setDictKeys (d, atKey, keysList):
for key in atKey:
d = d.setdefault(key, {})
for key in keysList:
d[key] = {}
d = {}
setDictKeys(d, ["a", "b"], ["some", "Keys", "List"])
# {'a': {'b': {'some': {}, 'Keys': {}, 'List': {}}}}
您可以使用一个循环来迭代
atKey
中的各个键,并“深入”嵌套dict
def setDictKeys (d, atKey, keysList):
for key in atKey:
d = d.setdefault(key, {})
for key in keysList:
d[key] = {}
d = {}
setDictKeys(d, ["a", "b"], ["some", "Keys", "List"])
# {'a': {'b': {'some': {}, 'Keys': {}, 'List': {}}}}
对于这个特殊的问题,这里还有一种方法
def fun(d,atkey,listofkeys):
d[atkey[0]]={atkey[1]:{}}
for i in listofkeys:
d[atkey[0]][atkey[1]][i] = {}
return d
print(fun({'1':'h999'},['a','b'],['hi','hello','abcd','a','b']))
对于这个特殊的问题,这里还有一种方法
def fun(d,atkey,listofkeys):
d[atkey[0]]={atkey[1]:{}}
for i in listofkeys:
d[atkey[0]][atkey[1]][i] = {}
return d
print(fun({'1':'h999'},['a','b'],['hi','hello','abcd','a','b']))
下面是一个使用
collections.defaultdict
的功能解决方案。根据您的用例,您可能不需要手动实例化子字典。您只需使用嵌套的defaultdict
from collections import defaultdict
from operator import getitem
from functools import reduce
tree = lambda: defaultdict(tree)
d = tree()
def setDictKeys(dataDict, atKey, keysList):
reduce(getitem, atKey, dataDict).update({i: {} for i in keysList})
setDictKeys(d, ['a', 'b'], [1, 2, 3])
print(d)
defaultdict({'a': defaultdict({'b': defaultdict({1: {}, 2: {}, 3: {}})})})
下面是一个使用
collections.defaultdict
的功能解决方案。根据您的用例,您可能不需要手动实例化子字典。您只需使用嵌套的defaultdict
from collections import defaultdict
from operator import getitem
from functools import reduce
tree = lambda: defaultdict(tree)
d = tree()
def setDictKeys(dataDict, atKey, keysList):
reduce(getitem, atKey, dataDict).update({i: {} for i in keysList})
setDictKeys(d, ['a', 'b'], [1, 2, 3])
print(d)
defaultdict({'a': defaultdict({'b': defaultdict({1: {}, 2: {}, 3: {}})})})
列表
不能设置为字典的键。您可以从collections
包中检查defaultdict
,并将默认类型定义为dict。对于嵌套大小写,您还需要再次设置新的defaultdict。list
不能设置为字典的键。您可以从collections
包中检查defaultdict
,并将默认类型定义为dict。对于嵌套的大小写,您还需要再次设置新的defaultdict。“此特定问题”询问的是“未知数量的列表元素”。“此特定问题”询问的是“未知数量的列表元素”,虽然