在Python中如何获取dict的局部视图?

her*_*lla 24 python dictionary python-2.7

是否有可能获得dict类似于pandas的Python 的部分视图df.tail()/df.head().假设你有一个很长的dict,你只想检查一些元素(开头,结尾等)dict.就像是:

dict.head(3)  # To see the first 3 elements of the dictionary.

{[1,2], [2, 3], [3, 4]}
Run Code Online (Sandbox Code Playgroud)

谢谢

Ret*_*ard 27

有点变态欲望,但你可以通过使用它来得到它

dict(islice(mydict.iteritems(), 0, 2))
Run Code Online (Sandbox Code Playgroud)

或者用于简短的词典

# Python 2.x
dict(mydict.items()[0:2])

# Python 3.x
dict(list(mydict.items())[0:2])
Run Code Online (Sandbox Code Playgroud)

  • 如果顺序很重要,是的。但据我了解,作者不需要。他只希望在打印字典时会在开始时打印的元素,而这正是它的本质。 (2认同)
  • `.items()`是一个迭代器,首先将它转换为列表,否则在切片时会引发错误. (2认同)

Mic*_*hal 8

编辑:

在 Python 3.x 中:不使用库就可以这样做。使用方法:

。项目()

它返回带有值的字典键列表。

有必要将其转换为列表,否则会发生错误 'my_dict' object is not subscriptable。然后将其转换为字典。现在可以用方括号切片了。

dict(list(my_dict.items())[:3])
Run Code Online (Sandbox Code Playgroud)

  • 现在是不是更明白了? (2认同)

Neb*_*Neb 6

我知道这个问题已经有 3 年历史了,但是这里有一个 pythonic 版本(可能比上面的方法更简单)Python 3.*:

[print(v) for i, v in enumerate(my_dict.items()) if i < n]
Run Code Online (Sandbox Code Playgroud)

它将打印n字典的第一个元素my_dict


Bre*_*arn 5

import itertools 
def glance(d):
    return dict(itertools.islice(d.iteritems(), 3))

>>> x = {1:2, 3:4, 5:6, 7:8, 9:10, 11:12}
>>> glance(x)
{1: 2, 3: 4, 5: 6}
Run Code Online (Sandbox Code Playgroud)

然而:

>>> x['a'] = 2
>>> glance(x)
{1: 2, 3: 4, u'a': 2}
Run Code Online (Sandbox Code Playgroud)

请注意,插入一个新元素以不可预测的方式改变了“第一个”三个元素。这就是人们告诉您 dicts 不是有序的时的意思。如果你愿意,你可以得到三个元素,但你不知道它们会是哪三个。


Lit*_*les 5

使用 Python 3 字典理解对 @Neb 的解决方案进行一一解析:

{k: v for i, (k, v) in enumerate(my_dict.items()) if i < n}
Run Code Online (Sandbox Code Playgroud)

它返回一个字典而不是打印输出