簡體   English   中英

Python翻譯字典中的列表/字典

[英]Python translate list/dicts in dict

抱歉,我真的不知道該在標題中加上什么,我希望示例足以

情況1-清單

我有一個這種格式的對象:

{
    'key[0]': 'value 0',
    'key[1]': 'value 1',
    'key[2]': 'value 2'
}

我想要一個這樣的對象:

{
    'key': [
        'value 0',
        'value 1',
        'value 2'
    ]
}

案例2-dict

我可以收到的另一個對象是這樣的:

{
    'key[subkey0]': 'value 0',
    'key[subkey1]': 'value 1',
    'key[subkey2]': 'value 2'
}

我想得到:

{
    'key': {
        'subkey0': 'value 0',
        'subkey1': 'value 1',
        'subkey2': 'value 2'
    }
}

我的問題是,有沒有這樣做的庫? 如果不是,最有效/最優化的方法是什么?

您可以考慮,在第一種情況下,我收到的列表將始終是完整的,這意味着不會跳過任何數字

這是一個開始:

from collections import defaultdict
import re
import pprint

def convert(d):
    result = defaultdict(dict)
    for key, value in d.items():
        main, sub = re.match(r'(\w+)\[(\w+)\]', key).groups()
        result[main][sub] = value

    result = dict(result)  # just for display really
    pprint.pprint(result)

convert({
    'key1[subkey0]': 'value 0',
    'key1[subkey1]': 'value 1',
    'key2[subkey0]': 'value 2',
    'key2[subkey1]': 'value 3',
})

輸出:

{'key1': {'subkey0': 'value 0', 'subkey1': 'value 1'},
 'key2': {'subkey0': 'value 2', 'subkey1': 'value 3'}}

對於第一種情況

old = {
    'key[0]': 'value 0',
    'key[1]': 'value 1',
    'key[2]': 'value 2'
}
new = dict()
the_key = old.keys()[0].split("[")[0]
new[the_key] = list()
for key in old:
    new[the_key].append(old[key])

print new

將舊字典鍵之一拆分為[以獲取真實鍵。 然后使用此鍵構造新字典。 這對我來說是一種不好的作法,但是行得通。 所以你可以看看。

暫無
暫無

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

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