簡體   English   中英

Python使用列表推導創建多維字典

[英]Python create multi-dimensional dictionary using list comprehensions

我有以下格式的字典:

   dictionary = {'key' : ('value', row_number, col_number)}

我希望將字典轉換為以下格式:

   converted_dict = {'key' : {'row':row_number, 'col':col_number}}

通過使用以下代碼,我得到以下錯誤

   dict_list = [(key, dict([('row',value[1]), ('column',value[2])])) for 
                                               key, value in cleaned_dict]
   converted_dict = dict(dict_list)       



   ValueError: too many values to unpack (expected 2)

我不太了解為什么您想要的字典實際上是字典時,為什么嘗試將字典轉換為列表。 看來您不了解如何理解口語。 試試這個方法:

converted_dict = {
   key: {'row': value[1], 'column': value[2]} for key, value in cleaned_dict.items()
}

另請注意,如果要遍歷字典中的鍵和值,則應調用dictionary.items() (如上面的代碼)

您可以使用字典理解:

dictionary = {'key' : ('value', 'row_number', 'col_number')}
>>> {k: {'row': row, 'col': col} for k, (_, row, col) in dictionary.items()}
{'key': {'row': 'row_number', 'col': 'col_number'}}

遍歷字典僅返回nd,不需要額外的步驟即可將列表轉換成字典。 鍵,

所以在這里我們需要一對鍵和值,所以我們需要使用dict.items

In [6]: lst = {'a':(0,1),'b':(2,1)}

In [7]: converted_dict = dict((key, dict([('row',value[0]), ('column',value[1])])) for key, value in lst.items())
Out[7]: {'a': {'column': 1, 'row': 0}, 'b': {'column': 1, 'row': 2}}

...還有另一種字典理解

converted_dict = {k : dict(zip(('row', 'column'), v[1:])) for k, v in dictionary.items()}

用於:

dictionary = {'a' : ('value', 1, 2), 'b' : ('value', 0, 0)}

返回:

{'a': {'row': 1, 'column': 2}, 'b': {'row': 0, 'column': 0}}

您的代碼唯一的錯誤是它缺少.items() 1 必須是:

dict_list = [... for key, value in cleaned_dict.items()]

1.如果您使用的是Python 2,則需要.iteritems()

暫無
暫無

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

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