我正在尝试将我的普通字典定义为OrderedDict,但我似乎无法访问密钥是内层。
my_dict = \
{
'key1':
{
'subkey1':value1,
'subkey2':value2
}
}
my_ordered_dict = OrderedDict\
([(
'key1',
(
('subkey1',value1),
('subkey2',value2)
)
)])
我可以针对这两种情况访问['key1']
,但我无法访问['key1']['subkey1']
订购的字典。
我做错了什么?
答案 0 :(得分:1)
带有'subkey1'的字典也应该被定义为OrderedDict,如果这就是你想要的。 所以它应该是这样的
import collections
my_ordered_dict = collections.OrderedDict()
sub_dict=collections.OrderedDict()
sub_dict['subkey1']=1
sub_dict['subkey2']=2
my_ordered_dict['key1']=sub_dict
sub_dict=collections.OrderedDict()
sub_dict['subkey1']=3
sub_dict['subkey2']=4
my_ordered_dict['key2']=sub_dict
print my_ordered_dict['key1']['subkey1']
print my_ordered_dict['key2']['subkey1']
输出将是
1
3
答案 1 :(得分:0)
如果您希望内部级别也是OrderedDict
,则需要将其明确定义为一个。由于参数顺序在构造OrderedDict
时很重要,为了保留它,您需要将键和值作为key, value
对的序列传递,如文档的OrderedDict
Examples and Recipes部分所示
将它应用于您的示例意味着您需要执行以下操作:
from collections import OrderedDict
value1, value2 = 42, 69
my_ordered_dict = OrderedDict([
('key1', OrderedDict([
('subkey1', value1),
('subkey2', value2)
])
)
])
print(my_ordered_dict['key1']['subkey1']) # --> 42