【问题标题】:is there a way to add new value at beginning of dictionary有没有办法在字典的开头添加新值
【发布时间】:2021-10-29 19:05:59
【问题描述】:

我有这本 python 字典

my_dic = {
     0:{"food":"banana"},
     1:{"food":"apple"},
     2:{"food":"orange"}
}

我想要当我从来没有为 my_dic 添加新值时,我希望它位于 my_dic 键为 0,所以 my_dic 看起来像这样

my_dic = {
     0:{new value},
     1:{"food":"banana"},
     2:{"food":"apple"},
     3:{"food":"orange"}
}

【问题讨论】:

  • 更好地使用队列
  • 如果您需要这种订购方式,您需要list,而不是dict。每当您看到带有顺序编号键的dict 时,都表明选择了错误的数据结构。
  • 您需要按索引访问字典吗?
  • 我想使用 list ,我必须插入的数据必须是字典
  • 您应该只使用collections.deque 并使用.appendleft

标签: python python-3.x dictionary


【解决方案1】:

你可以这样做

my_dic = {
     0:{"food":"banana"},
     1:{"food":"apple"},
     2:{"food":"orange"}
   }

my_dic = {0: "New value", **{k+1: v for k, v in my_dic.items()}}

这基本上是创建一个新的字典并将旧的放在最后。

返回

{0: 'New value', 1: {'food': 'banana'}, 2: {'food': 'apple'}, 3: {'food': 'orange'}}

由于这不是高性能的,您应该检查是否可以使用其他数据结构。许多评论者建议使用collections.deque(),这也是我自己会选择的。

【讨论】:

  • 它工作得很好,我得到了我想要的结果,谢谢
  • @urek 但是正如评论者一直在努力解释的那样,你没有充分的理由想要这个结果,因为这表明对 dict 的用途存在根本性的误解。
  • @BoarGules 不幸的是,我真正需要的是,如果我不以这种格式制作字典,我正在为 wordpress 网站制作爬虫,然后使用 phpserialize 对其进行序列化并将其插入到数据库中,抓取的帖子不会出现在主页中,主题也是使用 ioncube 解密的,所以我无法理解它是如何工作的
猜你喜欢
  • 2016-06-11
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
相关资源
最近更新 更多