是否可以在Python中获得类似于pandas dict
的{{1}}的部分视图。假设你有一个很长的df.tail()/df.head()
,你只想检查dict
的一些元素(开头,结尾等)。类似的东西:
dict
由于
答案 0 :(得分:23)
有点变态的欲望,但你可以通过使用这个来获得
dict(islice(mydict.iteritems(), 0, 2))
或短词典
# Python 2.x
dict(mydict.items()[0:2])
# Python 3.x
dict(list(mydict.items())[0:2])
答案 1 :(得分:4)
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}
然而:
>>> x['a'] = 2
>>> glance(x)
{1: 2, 3: 4, u'a': 2}
请注意,插入新元素会以不可预测的方式更改“第一个”三个元素。当他们告诉你dicts没有订购时,这就是人们的意思。如果你愿意,你可以得到三个元素,但是你不知道它们会是哪三个。
答案 2 :(得分:3)
我知道这个问题已有3年历史了,但这里是Python 3.*
的Python版本(也许比上述方法更简单):
[print(v) for i, v in enumerate(my_dict.items()) if i < n]
它将打印字典n
的前my_dict
个元素
答案 3 :(得分:2)
使用Python 3 dict理解的@Neb解决方案:
{k: v for i, (k, v) in enumerate(my_dict.items()) if i < n}
它返回一个dict而不是打印输出
答案 4 :(得分:2)
编辑:
在Python 3.x中: 如果不使用库,则可以这样做。使用方法:
.items()
返回带有值的字典键列表。
有必要将其转换为列表,否则将发生错误'my_dict'对象不可下标。然后将其转换为字典。现在可以使用方括号进行切片了。
dict(list(my_dict.items())[:3])
答案 5 :(得分:1)
CPython实现细节:键和值列在 非随机的任意顺序因Python而异 实现,并取决于字典的插入历史 和删除。
我只玩弄其他Python实现(例如PyPy,IronPython等),所以我不确定是否所有Python实现都是这种情况,但一般的想法一个字典/ hashmap / hash / etc是密钥是无序的。
话虽这么说,你可以使用OrderedDict
from the collections
library。 OrderedDict
在您输入密钥时记住密钥的顺序。
答案 6 :(得分:1)
如果按键可以排序,您可以这样做:
head = dict([(key, myDict[key]) for key in sorted(myDict.keys())[:3]])
或者也许:
head = dict(sorted(mydict.items(), key=lambda: x:x[0])[:3])
其中x[0]
是每个键/值对的键。
答案 7 :(得分:1)
对于那些更愿意使用pandas
数据帧解决此问题的人。只需将字典mydict
塞入数据框中,旋转它,然后获得前几行:
pd.DataFrame(mydict, index=[0]).T.head()
0 hi0
1 hi1
2 hi2
3 hi3
4 hi4
答案 8 :(得分:0)
一个简短的解决方案可以是:
import pandas as pd
d = {"a": [1,2], "b": [2, 3], "c": [3, 4]}
pd.Series(d).head()
a [1, 2]
b [2, 3]
c [3, 4]
dtype: object
答案 9 :(得分:0)
list(reverse_word_index.items())[:10]
将数字从10更改为要预览的字典reverse_word_index
的许多项
答案 10 :(得分:0)
这会返回一本字典:
dict(list(my_dictname.items())[0:n])
如果你只是想看一眼你的字典,那么就这样做:
list(freqs.items())[0:n]