Python 根据if语句,将每个键的多个值添加到字典中

Python 根据if语句,将每个键的多个值添加到字典中,python,dictionary,Python,Dictionary,我需要将一个路径转换为python字典,其中父文件夹=key和文件夹内容=value(例如'a/foo''a/bar''b/root''b/data'需要{'a':['foo','bar'],'b':['root','data']})我已初始化字典d={'a':[],'b':[]code>和我的值列表l=['a/foo'、'a/bar'、'b/root'、'b/data'] 我用if语句做了一个嵌套for循环,该语句负责说明应该用key分配给哪个值,并将所述key从值路径中删除(例如,“a/ro

我需要将一个路径转换为python字典,其中
父文件夹=key
文件夹内容=value(例如'a/foo''a/bar''b/root''b/data'
需要
{'a':['foo','bar'],'b':['root','data']}
)我已初始化字典
d={'a':[],'b':[]code>和我的值列表
l=['a/foo'、'a/bar'、'b/root'、'b/data']

我用if语句做了一个嵌套for循环,该语句负责说明应该用key分配给哪个值,并将所述key从值路径中删除(例如,“a/root”变成“root”)


问题是,我以正确的格式获取值,除了为每个键
{a:['foo',bar',root',data'],b:['foo',bar',root',data']}获取所有值之外
就好像我的if语句被忽略了一样。如果有人知道这个问题!谢谢

考虑到结果的结构,可以更轻松地处理这个问题:

from collections import defaultdict

d = defaultdict(list)

lst = ['a/foo', 'a/bar', 'b/root', 'b/data']

for path in lst:
   k, v = path.split('/')
   d[k].append(v)

print(d)
# defaultdict(<class 'list'>, {'b': ['root', 'data'], 'a': ['foo', 'bar']})
从集合导入defaultdict
d=默认DICT(列表)
lst=['a/foo','a/bar','b/root','b/data']
对于lst中的路径:
k、 v=路径分割(“/”)
d[k]。追加(v)
印刷品(d)
#defaultdict(,{'b':['root','data'],'a':['foo','bar']})

使用
拆分
拆分到文件夹和子文件夹

d = {'a': [], 'b': [] }
l = ['a/foo', 'a/bar', 'b/root', 'b/data']
for key in d:
    for value in l:
        sep = value.split('/')
        if key == sep[0]:
            d[key].append(sep[1])
print(d)
# {'b': ['root', 'data'], 'a': ['foo', 'bar']}

初始化词典的方式有问题CustomerDatabases

而不是:

customersDatabases = d # problem with keys initialization (pointer to same empty list)
尝试:


我的猜测是,您正在使用对同一个空列表的引用来初始化两个键条目,在我的机器()上使用Python3可以很好地工作。您的问题似乎与实际操作不同,或者您的Python有问题。使用
k,v=os.path.dirname(path),os.path.basename(path)可能更具通用性
@Chris\u Rands是的,这可能是对多结构路径的一种概括。很好!
customersDatabases = d # problem with keys initialization (pointer to same empty list)
customersDatabases = dict(d) # new instance properly initialized