最pythonic的方法来添加具有特定键的字典

2024-10-02 18:16:13 发布

您现在位置:Python中文网/ 问答频道 /正文

Dict = {'Key_1': 'Data_1', 'Key_2': 'Data_2', ..., 'Key_n': 'Data_n'}这样的字典包含按升序命名的n个键。在

AddNextKey(Dict, NewData)的方法应该确定最后一个键n,并添加一个值为NewData的新键n+1。 如果Dict为空,则该方法应附加键Key_1。在

我很确定python解决方案不需要超过两三行代码就可以实现这一点。在

注:词典是否有序并不重要。只能追加正确的next键(n+1)。在

谁能给点建议吗?在


Tags: 方法key代码data字典解决方案命名dict
3条回答

字典里没有顺序。你不能从中得到最后一个插入的元素。在

看看这个例子:

>>> {'Key_1': 'Data_1', 'Key_2': 'Data_2'} == {'Key_2': 'Data_2', 'Key_1': 'Data_1'}
True

如您所见,顺序对于dict是没有意义的。在

问题是你所说的最后一个键n.last insert是什么意思?还是用最大的键%index%?在第一种情况下,您最好使用OrderedDict,如前所述。在

不过,如果我说得对的话,这是我的解决办法。在

^{pr2}$

你会得到

{'Key_1': 'Data_1', 'Key_3': 'Data_3', 'Key_2': 'Data_2'}

你可以用字典的长度

Dict = dict()
for i in range(10):
    Dict['key_' + str(len(Dict)+1)] = 'value_'+str(len(Dict)+1)
print Dict

输出

^{pr2}$

我不确定它是否是最具python风格的解决方案,但我的方法是将dict子类化并添加该附加方法。因为它是一个子类,所以您可以在任何可以实际使用NextKeyDict的实例,但也可以在需要的地方执行这些特殊操作。在

class NextKeyDict(dict):
    def add_next_key(self, new_data):
        if not self.keys():
            self[0] = new_data
            return

        last_key = sorted(self.keys())[-1]
        new_key = last_key + 1
        self[new_key] = new_data

d = NextKeyDict()
d.add_next_key('foo')
d.add_next_key('bar')
d.add_next_key('baz')
print(d)

输出

^{pr2}$

相关问题 更多 >