在单个语句中将项目插入到dict中的特定位置

时间:2017-07-18 04:28:21

标签: python dictionary

在python 3.6中命令dict,所以现在我们可以依赖具有特定位置的项目。我意识到这不完全准确,但我记不起确切的细节。 现在我唯一担心的地方是零位。所以假设我有以下字典:

dict1 = {'a':1,'b':2}

我想将键{'c':3}插入到零位置。我可以用三行代码来做到这一点,但我敢打赌,有一种更短的方法可以做到:

temp_dict = {}
temp_dict.update({'c':3})
dict1 = {**temp_dict,**dict1}

3 个答案:

答案 0 :(得分:2)

enter image description here一行:

dict1 = {k: v for k, v in ([('c', 3)] + list(dict1.items()))}

这很有趣。我还没有安装3.6。

因为我觉得这个任务很有趣,所以这里有一个单行函数可以将一个项目插入到dict中的任何位置。

insert = lambda _dict, obj, pos: {k: v for k, v in (list(_dict.items())[:pos] + list(obj.items()) + list(_dict.items())[pos:])}

答案 1 :(得分:1)

你走了。

dict1 = {'c':3, **dict1}

答案 2 :(得分:0)

在 Python 3.6+ 中,您可以定义自己的具有 dict 方法的 insert() 子类:

class MyDict(dict):
    def insert(self, pos, new_entry):
        items = list(self.items())
        items.insert(pos, *tuple(new_entry.items()))
        self.clear()
        self.update(type(self)(items))


if __name__ == '__main__':

    dict1 = MyDict({'a': 1,'b': 2})
    dict1.insert(0, {'c': 3})
    print(dict1)  # -> {'c': 3, 'a': 1, 'b': 2}

子类的实例可以用于常规字典对象所在的任何地方。