簡體   English   中英

python基於兩個列表創建嵌套目錄

[英]python create nested directory based on two lists

早上好,

這可能很容易,但是我只是從python開始。 學習:有沒有比這更干凈的方法基於兩個列表創建嵌套字典:

person = ['mama.a','mama.b', 'mama.c',
         'mama.d', 'papa.a', 'papa.b']
kind = ['a', 'b', 'c', 'd']
combined = {}

# GOAL:
# {'mama': {'a': [], 'c': [], 'b': [], 'd': []}, 'papa': {'a': [], 'c': [], 'b': [], 'd': []}}

for human in [i.split('.')[0] for i in person]:
    combined[human] = {}
    for attrib in kind:
        combined[human][attrib] = []
{p.split('.')[0]: {k: [] for k in kind} for p in person}

setset名稱呢? 為了確保只嘗試將每個dict添加一次。

combined = {}
for n in set(p.split('.')[0] for p in person):
    combined[n] = {k:[] for k in kind}

這可能會變成怪異的一線嵌套dict理解。 雖然我不認為它會那么容易閱讀。

或者您可以將set拆分到另一行。 然后變成

pset = set(p.split('.')[0] for p in person)
pdict = {p: {k: [] for k in kind} for p in pset}

第二行與@Faiz Haldes答案相同。

combined = {x.split('.')[0]:{i:[] for i in kind} for x in person} #if you require no check as to whether mama or papa contain a, b, c, or d
print combined

neutral = {i.split('.')[0]:[n.split('.')[1] for n in person if n.split('.')[0] == i.split('.')[0]] for i in person} #if you require a check
combined = {k:{v:[] for v in neutral[k]} for k in neutral}
print combined

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM