我有一个字典,我以特定的顺序声明,并希望一直保持这个顺序。键/值不能根据它们的值来排列顺序,我只想让它按照我声明它的顺序排列。
如果我有字典
d = {'ac': 33, 'gw': 20, 'ap': 102, 'za': 321, 'bs': 10}
如果我查看或遍历它,它就不是这个顺序了。是否有任何方法确保Python将保持我声明键/值的显式顺序?
我有一个字典,我以特定的顺序声明,并希望一直保持这个顺序。键/值不能根据它们的值来排列顺序,我只想让它按照我声明它的顺序排列。
如果我有字典
d = {'ac': 33, 'gw': 20, 'ap': 102, 'za': 321, 'bs': 10}
如果我查看或遍历它,它就不是这个顺序了。是否有任何方法确保Python将保持我声明键/值的显式顺序?
当前回答
一般来说,你可以设计一个行为类似于字典的类,主要实现方法__contains__, __getitem__, __delitem__, __setitem__等等。这个类可以有任何你喜欢的行为,例如在键上提供一个排序的迭代器……
其他回答
你可以做和我为字典做的一样的事情。
创建一个列表和空字典:
dictionary_items = {}
fields = [['Name', 'Himanshu Kanojiya'], ['email id', 'hima@gmail.com']]
l = fields[0][0]
m = fields[0][1]
n = fields[1][0]
q = fields[1][1]
dictionary_items[l] = m
dictionary_items[n] = q
print dictionary_items
如果您希望以特定顺序使用字典,还可以创建一个列表的列表,其中第一项将是键,第二项将是值 就像这样 例子
>>> list =[[1,2],[2,3]]
>>> for i in list:
... print i[0]
... print i[1]
1
2
2
3
另一种替代方法是使用Pandas数据框架,因为它保证了类字典结构中条目的顺序和索引位置。
一般来说,你可以设计一个行为类似于字典的类,主要实现方法__contains__, __getitem__, __delitem__, __setitem__等等。这个类可以有任何你喜欢的行为,例如在键上提供一个排序的迭代器……
我将给出一个简单的例子,而不是解释理论部分。
>>> from collections import OrderedDict
>>> my_dictionary=OrderedDict()
>>> my_dictionary['foo']=3
>>> my_dictionary['aol']=1
>>> my_dictionary
OrderedDict([('foo', 3), ('aol', 1)])
>>> dict(my_dictionary)
{'foo': 3, 'aol': 1}