Python使用列表推导创建多维字典
Posted
技术标签:
【中文标题】Python使用列表推导创建多维字典【英文标题】:Python create multi-dimensional dictionary using list comprehensions 【发布时间】:2018-07-24 18:56:25 【问题描述】:我有以下格式的字典:
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)
【问题讨论】:
【参考方案1】:我不太明白为什么当你想要的实际上是 dict 时你试图将字典转换为列表。看来你不明白如何做听写理解。试试这个方法:
converted_dict =
key: 'row': value[1], 'column': value[2] for key, value in cleaned_dict.items()
另外请注意,如果您想遍历字典中的键和值,您应该调用dictionary.items()
(如上面的代码)
【讨论】:
谢谢,这对我很有帮助。【参考方案2】:您可以使用字典理解:
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'
【讨论】:
【参考方案3】:遍历字典只返回不需要额外的步骤将列表转换为字典。键,
所以这里我们需要一对键和值所以我们需要使用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
【讨论】:
【参考方案4】:...还有另一个dict-comprehension。
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<b>.items()</b>]
1. 如果您使用的是 Python 2,则需要 .iteritems()
。
【讨论】:
以上是关于Python使用列表推导创建多维字典的主要内容,如果未能解决你的问题,请参考以下文章