首页 > 解决方案 > 创建一个递增的键并将其添加到字典中?

问题描述

我是 python 新手,我一直无法通过各种谷歌搜索找到答案。本质上,我正在尝试通过函数向字典添加新键。我需要该函数来创建一个唯一键,该键在每次通过循环时递增。这些键的值将作为已填写的对象输入。

我想要做的例子:

dict = {}
looper = 0
While looper < 100:
    dict[newkey1] = value
    looper += 1

最终,我需要将结果作为字典,如下所示:

dict = {newkey1 : value1, newkey2 : value2, newkey3 : value3, ...}

这些值将由一个数学函数创建,并从我的脚本前面传递到值槽中。

我不确定我的问题是否有答案。我可能从一开始就错误地构建了我的程序。

编辑**大家好,非常感谢您的回答。在阅读下面的答案并实施其中一些之后,我想我对我正在寻找的东西有了更好的理解。

简而言之,这就是我正在做的事情:我有一个名为 window 的类。窗口有 4 个不同的属性。我希望用户将这些属性输入到一个新对象中。创建对象后,我想将对象作为键存储在字典中。该值将设置为 0 开始。然后,我将根据不相关的数学方程式更新该值。我需要做的是创建一个新的递增对象:

win1 = Window(var1 = input("please input var1:", etc, etc, etc).

win1 是我每次都需要递增并保存到字典中的内容。这将暂时在终端中运行,因为我还没有自学 GUI。

本质上它将这样运行:

#user enters win1 and variables.
more_win = input("Do you have another window to enter?")

while more_win == "yes":
   # this is where I dont know what to do
   # program needs to generate a new object that is incremented
   # and then stored within a dictionary having the value of that newly 
   # incremented key be 0 EX(win1: 0, win2 : 0, etc, etc)
win2 = Window(var1 = input(...), etc, etc, etc)

我希望这是有道理的!我讨厌问一个愚蠢的问题,我只是不知道在这里用谷歌搜索什么。

标签: pythonpython-3.xdictionary

解决方案


作为第一遍,这就是您要寻找的内容:

def add_value(dx: dict, new_value) -> dict:
  max_key = int(sorted(dx.keys())[-1])
  dx[max_key + 1] = new_value
  return dx

不过,这里有一些警告:

  • 它假设字典中的所有键都可以解析为整数。如果没有,它将失败。
  • 它对每次调用进行排序,这可能会耗费大量时间。

如果您可以保证字典没有添加其他键,您可能不需要函数:

original_dictionary: dict = ...
sorted_dictionary = {k: original_dictionary[k] for k in sorted(original_dictionary.keys())}
...
// Whenever you add a key
new_idx = sorted_dictionary.keys()[-1]
sorted_dictionary[new_idx] = new_value

这是因为在 Python 3.7+ 中,字典保留了它们的键排序顺序。


推荐阅读