【发布时间】: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
假设这是我的字典
test = {1:'a',2:'b',3:'c',4:'d',5:'e'}
如何使用 for 循环打印它的前 3 个元素?
【问题讨论】:
标签: python python-2.7 dictionary scikit-learn
此解决方案假定“前 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])),它只排序一次。
在 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
【讨论】: