簡體   English   中英

將 Python 字典轉換為嵌套字典

[英]Convert Python dictionary to nested dictionary

我有一個關於 python 字典和嵌套字典的問題。 如果我有這樣的字典:

data = {'abc': ['aaa', 'bbb', 'ccc'], 'def': ['ddd', 'eee', 'fff']}

我可以以某種方式將這本字典中的列表也轉換為字典嗎? 所以輸出會是這樣的:

data = {'abc': {'aaa', 'bbb', 'ccc'}, 'def': {'ddd', 'eee', 'fff'}}

我是 Python 新手,只是想了解嵌套字典及其工作原理。 先感謝您!

如果你想要一個集合字典,那么只需使用字典理解:

{key:set(value) for key,value in data.items()}

包含 dicts 的 dict 的語法是

data = {
    'abc': {'aaa':1, 'bbb':2, 'ccc':42}, 
    'def': {'ddd':45, 'eee':"Monty", 'fff':None}, # this trailing comma is Pythonic
    }

所問的問題是一個包含集合的字典,它是完全有效和有用的。

如果您的主要目的是確定存在或不存在,您將使用包含集合(而不是列表)的 dict,就像if 'aaa' in data['abc']:特別是不要將任何值與內部鍵相關聯。 (在將集合添加到 Python 之前,程序員使用 dicts 將所有值設置為任意且不相關的值,例如1None

如果您希望能夠存儲由外部和內部鍵訪問的值,您將使用包含 dicts 的 dict,如data['aaa']['ddd'] = "I'm new here" ,並且您可以當然仍然測試if 'ddd' in data['aaa']:

data = {'abc': {'aaa', 'bbb', 'ccc'}, 'def': {'ddd', 'eee', 'fff'}}

是無效的python 字典。 Python 字典采用鍵:值對的形式

您目前在上面的字典中擁有的是集合字典而不是字典字典。

您可以做的是添加一些“虛擬”鍵以將列表轉換為字典。 例如下面的代碼:

data = {'abc': ['aaa', 'bbb', 'ccc'], 'def': ['ddd', 'eee', 'fff']}
dict2 = {}

i = 0
for key, value in data.items():
    dict2[key] = {}
    for element in value:
        dict2[key][i] = element
        i += 1
    i = 0

print dict2

將為您提供以下輸出(這是一個嵌套字典):

{'abc': {0: 'aaa', 1: 'bbb', 2: 'ccc'}, 'def': {0: 'ddd', 1: 'eee', 2: 'fff'}}

只需使用set完成此任務:

data = {'abc': ['aaa', 'bbb', 'ccc'], 'def': ['ddd', 'eee', 'fff']}

b = {}
for key, value in data.items(): 
  b[key] = set(value)

print(b)

輸出:

{'abc': {'ccc', 'bbb', 'aaa'}, 'def': {'fff', 'ddd', 'eee'}}

暫無
暫無

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

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