在 Python 中创建二维字典

Posted

技术标签:

【中文标题】在 Python 中创建二维字典【英文标题】:Creating 2D dictionary in Python 【发布时间】:2014-11-13 11:27:32 【问题描述】:

我有一个来自“set1”输出的详细信息列表,例如“name”、“place”、“animal”、“thing” 和具有相同细节的“set2”。

我想用dict_names[setx]['name']... 等在这些行上创建一个字典。

这是最好的方法吗?如果没有,我该怎么做?

我不确定 2D 在字典中是如何工作的。有任何指针吗?

【问题讨论】:

举一个更具体、更完整的例子会有所帮助。 setx 中有什么,你希望 dict_names[setx]['name'] 返回什么? 【参考方案1】:

它将具有以下语法

dict_names = 
    'd1': 
        'name': 'bob',
        'place': 'lawn',
        'animal': 'man'
    ,
    'd2': 
        'name': 'spot',
        'place': 'bed',
        'animal': 'dog'
    

然后您可以像这样查找内容

>>> dict_names['d1']['name']
'bob'

分配一个新的内部字典

dict_names['d1'] = 'name': 'bob', 'place': 'lawn', 'animal': 'man'

将特定值分配给内部字典

dict_names['d1']['name'] = 'fred'

【讨论】:

我创建了 'name':'bob', 'place':'lawn', 'animal':'man' 部分,但如何将其分配为 d1 的键?跨度> dict_names['d1'] = 'name':'bob', 'place':'lawn', 'animal':'man' 所以这就像一本普通的一维字典。 对不起 - 我跟着整个事情。只花了我几分钟,奇怪的是,即使我清楚地理解字典的概念。我认为大型结构有点吓到我! 当我需要通过第一个键和第二个键都获得***的情况下 - 例如,拉出所有具有“名称”标签的对象?【参考方案2】:

这样的事情会起作用:

set1 = 
     'name': 'Michael',
     'place': 'London',
     ...
     
# same for set2

d = dict()
d['set1'] = set1
d['set2'] = set2

那么你可以这样做:

d['set1']['name']

等等。最好将其视为嵌套结构(而不​​是二维矩阵):


 'set1': 
         'name': 'Michael',
         'place': 'London',
         ...
         
 'set2': 
         'name': 'Michael',
         'place': 'London',
         ...
         

查看here,以轻松查看嵌套字典。

【讨论】:

这会保存重复的值【参考方案3】:

这样的事情应该可以工作。

dictionary = dict()
dictionary[1] = dict()
dictionary[1][1] = 3
print(dictionary[1][1])

您也可以将其扩展到更高的维度。

【讨论】:

以上是关于在 Python 中创建二维字典的主要内容,如果未能解决你的问题,请参考以下文章

在共享内存中创建二维数组

在 C# 中创建一个二维数组

如何在 jquery 中创建二维关联数组?

如何在java中创建二维数组[重复]

如何在 Java 中创建锯齿状二维数组?

在 Ruby 中创建二维数组和访问子数组