【问题标题】:How to access specific elements of a dictionary如何访问字典的特定元素
【发布时间】:2018-07-05 21:15:25
【问题描述】:

假设这是我的字典

test = {1:'a',2:'b',3:'c',4:'d',5:'e'}

如何使用 for 循环打印它的前 3 个元素?

【问题讨论】:

  • python 2.7 中的字典没有排序。因此,您必须定义“前 3 个元素”的含义。

标签: python python-2.7 dictionary scikit-learn


【解决方案1】:

此解决方案假定“前 3 个元素”是指“按键排序的前 3 个元素”。

test = {1:'a',2:'b',3:'c',4:'d',5:'e'}

in_scope = set(sorted(test)[:3])
print({k: v for k, v in test.items() if k in in_scope})

# {1: 'a', 2: 'b', 3: 'c'}

注意:这适用于 python 3.6+,因为dictionaries are naturally ordered。为了获得更好的性能,请使用堆队列而不是对所有键进行排序然后列表切片。

【讨论】:

  • 这涉及到对 test len(test) 次的排序。当然更简单的解决方案就是print(dict(sorted(test.items())[:3])),它只排序一次。
  • @ShadowRanger,好点子,我刚刚将其分开,因此不再重复排序。如果性能很重要,最好使用堆队列。
【解决方案2】:

在 Python 中,字典本质上是无序的,为了做你想做的事,你需要创建一个有序的字典,它会记住键值对的插入顺序。这里有一些示例代码可以做你想做的事情

import collections
test = {1:'a',2:'b',3:'c',4:'d',5:'e'}
blah = collections.OrderedDict(test)
for x in range(3):
    print(blah.items()[x])

如果这是 python 3,您必须将 blah.items() 调用包装在一个列表中,因为它返回一个可迭代的对象视图。这是更多信息的链接Accessing Items In a ordereddict

【讨论】:

猜你喜欢
  • 2013-03-24
  • 2019-12-09
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-04
相关资源
最近更新 更多