python - 在循环中使用字典

标签 python dictionary

我正在尝试编写一个复制贪心算法的代码,为此我需要确保我的计算使用可能的最高值。潜在值显示在字典中,我的目标是首先使用最大值,然后再使用较低的值。但是,由于字典值未排序,因此在 for 循环中我得到了无组织的序列。例如,下面代码的输出将从 25 开始。

如何确保我的代码使用的是字典,但遵循 (500,100,25,10,5) 的顺序?

a={"f":500,"o":100,"q":25,"d":10,"n":5}  
for i in a:
    print a[i]

最佳答案

我想到了两个想法:

  1. 使用 collections.<strong>OrderedDict</strong> ,一个字典子类,它会记住添加项目的顺序。只要您按值降序添加对,循环遍历此字典就会以正确的顺序返回它们。

  2. 如果您不能确定这些项目将以正确的顺序添加到字典中,您可以通过排序来构建它们:

    • 使用values() 获取字典的值|
    • 按(升序)值排序:这是 sorted() , Python 会默认升序排序
    • 改为通过降序获取它们:这是 reverse=True

    这是一个例子:

    for value in sorted(a.values(), reverse=True):
        print value
    

关于python - 在循环中使用字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31967705/

相关文章:

python - 如何将列表的项目连接到字典中的相应值

python的**kwargs效率

python - 使用 pywinauto python 的 GUI 自动化。属性错误,uaicontrols.py 中的 menu_select() 缺失错误

python - 缺少 1 个必需的位置参数(创建对象并初始化字典)

python - 标量变量误差的索引是什么意思? Python

python - 方法输出是否需要绑定(bind)到 "self"才能被其他方法使用?

python - 如何通过相同的键比较两个字典列表?

pointers - 将 map 的值指针添加到 slice 的行为

python - 当它们都共享相同的日期时获取列中值最高的行?

python - 如何使这段包含函数、for 和 while 循环的代码运行良好?