python - 创建一个递增的键并将其添加到字典中?
问题描述
我是 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)
我希望这是有道理的!我讨厌问一个愚蠢的问题,我只是不知道在这里用谷歌搜索什么。
解决方案
作为第一遍,这就是您要寻找的内容:
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+ 中,字典保留了它们的键排序顺序。
推荐阅读
- python - 针对 Python CAN 性能优化 BLF 阅读器
- sql-server - SQL Server 中 LINQ let 子句的等价物
- ios - Firestore:使用 SnapshotListener 调用异步函数并使用 DispatchGroup 循环导致崩溃
- node.js - 指示在哪个文件夹中安装包 npm
- java - 从浏览器运行端点给出 503-服务不可用
- git - Git合并了基本相同的不同存储库
- python - 我想列出特定文件夹中的目录,但我希望它们在名称前列出一个数字
- javascript - 在 shown.bs.tab 事件中无法获取上一个活动选项卡
- arrays - 无法将 const 分配给状态值,返回未定义
- bash - 用于安装 aws cli、java 的 shell 脚本,