如何打印字典中的选定项目?

时间:2018-12-07 19:53:06

标签: python

我知道非常基本,但这是我的代码:

dict = {'blue':475, 'Green':530, 'Red':650, 'IR':800, 'UV':300}
x = dict['IR'] + dict['UV']
x //= 2
dict['Visible'] = x
print('IR',dict['IR'], 'UV',dict['UV'], 'Visible',dict['Visible'])

我只想打印字典中的最后3个(不是红色,而是可见的)项目。虽然可以,但我想必须有一个更直接的方法。

谢谢

1 个答案:

答案 0 :(得分:0)

Python中的字典排序很杂乱,并且在整个Python版本中,实现的细节已多次更改。

从Python 3.7开始,the dict docs确保dict的迭代顺序与插入顺序匹配。对于CPython实现,在3.6中也是如此。相关报价:

  

在3.7版中已更改:保证字典顺序为插入顺序。此行为是3.6版CPython的实现细节。

在Python 3.5及更早版本中,根本无法保证排序(有时是故意不确定的,以防止人们依赖它!)。

因此,如果要打印Python 3.7(或CPython 3.6的实现)中最近插入的3个元素,可以执行以下操作:

my_dict = { . . . }
# Append some more stuff to my_dict

dict_in_insertion_order = list(my_dict.items())
# a list of key-value tuples, like [('IR', 800), ('UV', 300), ('Visible', 550)]
last_3 = dict_in_insertion_order[-3:]

这使用Python的列表切片,其中-3的起始索引表示“从末尾开始3”。

已编辑以添加

当然,如果您不关心通用案例解决方案,则始终可以只指定要打印的键,如下所示:

for key in ['IR', 'UV', 'Visible']:
    print(key + ':', my_dict[key])  # Prints: IR: 800, then UV: 300, etc.