在 Python 中如何获取字典的部分视图?

     2023-02-23     204

关键词:

【中文标题】在 Python 中如何获取字典的部分视图?【英文标题】:In Python how to obtain a partial view of a dict? 【发布时间】:2015-04-26 14:11:30 【问题描述】:

是否有可能在 Python 中获得类似于 pandas df.tail()/df.head()dict 的部分视图。假设您有一个很长的dict,并且您只想检查dict 的一些元素(开头、结尾等)。比如:

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

[1,2], [2, 3], [3, 4]

谢谢

【问题讨论】:

"the beginning" 和 "the end" 对于 Python 字典没有意义,因为它们的顺序是任意的。 “前三个元素”是什么意思? dict 没有固有的键顺序感。 你确定你没有混淆字典和列表吗? 我的意思是,如果你在控制台上调用 dict 会出现前三个元素.....有时你这样做,如果 dict 很长,你会得到很多使您的所有控制台空间变得混乱的数据。 @iCodez 我明白了,但如果你只是想快速看一下字典的外观怎么办。 【参考方案1】:

来自the documentation:

CPython 实现细节:键和值列在一个 非随机的任意顺序,在 Python 中有所不同 实现,并且取决于字典的插入历史 和删除。

我充其量只是玩弄了其他 Python 实现(例如 PyPy、IronPython 等),所以我不确定是否所有 Python 实现都是这种情况,但 dict/ 的一般概念hashmap/hash/etc 是键是无序的。

话虽如此,您可以使用OrderedDict from the collections library。 OrderedDicts 记住您输入时的键顺序。

【讨论】:

他在他的 cmets 中声明他已经知道这一点。他只需要一小部分 dict 内容。【参考方案2】:

如果键是可排序的,您可以这样做:

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] 是每个键/值对的键。

【讨论】:

【参考方案3】:

有点奇怪的愿望,但你可以通过这个来实现

dict(islice(mydict.iteritems(), 0, 2))

或短字典

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

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

【讨论】:

或许dict(sorted(mydict.items()[:3]) 好吧,如果订单确实重要,是的。但据我了解,作者不需要那个。他只想要在打印字典时会在开头打印的元素,而这正是它的样子 .items()是一个迭代器,先转成列表,不然切片的时候会报错。 @user5061:不,OP 指定 Python 2.7。 # user 5061 在 python2 项目中返回列表。在 python3 中,您可以使用 islice 对迭代器进行切片。【参考方案4】:
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

但是:

>>> x['a'] = 2
>>> glance(x)
1: 2, 3: 4, u'a': 2

请注意,插入一个新元素会以不可预知的方式改变“前”三个元素的内容。这就是人们告诉你字典没有排序时的意思。您可以根据需要获得三个元素,但您无法知道它们会是哪三个。

【讨论】:

【参考方案5】:

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

[print(v) for i, v in enumerate(my_dict.items()) if i < n]

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

【讨论】:

这仅在您的键通常是递增整数时才有效。如果您有负数、大数、字符串或日期怎么办? @Wassadamo 为什么这不适用于任意键? 你是对的。使用枚举索引而不是键【参考方案6】:

对于那些宁愿用pandas 数据框解决这个问题的人。只需将您的字典 mydict 塞入数据框中,旋转它,然后获取前几行:

pd.DataFrame(mydict, index=[0]).T.head()

0 hi0 1 hi1 2 hi2 3 hi3 4 hi4

【讨论】:

【参考方案7】:

使用 Python 3 字典理解的 @Neb 解决方案:

k: v for i, (k, v) in enumerate(my_dict.items()) if i < n

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

【讨论】:

【参考方案8】:

编辑:

在 Python 3.x 中: 在不使用库的情况下,可以这样做。使用方法:

.items()

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

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

dict(list(my_dict.items())[:3])

【讨论】:

您能否为您的答案提供一些背景信息,以便对其他人有用? 现在是不是更容易理解了?【参考方案9】:

一个快速而简短的解决方案可以是这样的:

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

【讨论】:

请注意,这会给你一个object 而不是dicthead = pd.Series(d).head() 之后的含义,这将不起作用:for name,group in head... 但这将:for name in head.keys(): # \n # group = head[name]【参考方案10】:
list(reverse_word_index.items())[:10]

将数字从 10 更改为您想要预览的字典 reverse_word_index 的任意数量

【讨论】:

【参考方案11】:

这会返回一个字典:

dict(list(my_dictname.items())[0:n])

如果你只是想看一眼你的字典,那么就这样做:

list(freqs.items())[0:n]

【讨论】:

【参考方案12】:

字典中项目的顺序在 Python 3.7+ 中保留,所以这个问题是有道理的。

要从一开始就获取只有 10 个项目的字典,您可以使用 pandas

d = "a": [1,2], "b": [2, 3], "c": [3, 4]

import pandas as pd
result = pd.Series(d).head(10).to_dict()
print(result)

这将产生一个新的字典。

【讨论】:

【参考方案13】:
d = "a": 1,"b": 2,"c": 3
for i in list(d.items())[:2]:
     print(':'.format(d[i][0], d[i][1]))

a:1
b:2

【讨论】:

1.需要'' 左右a, b, c。 2. 前两个元素是[:2]。 3. i 是一个元组。 4. 为什么不是 f 弦? 5.i, d[i] 不对,你需要i[0], i[1]。但是for k, v… print(f"k: v") 会更好。 (@JackDeeth 关于#4,问题标记为 python 2.7,f 字符串不正确。)这段代码试过了吗?正如已经提到的, .items() 返回一个元组。您要么想要 .keys() ,要么需要更改打印语句...

Python:如何从熊猫系列的字典中获取值

】Python:如何从熊猫系列的字典中获取值【英文标题】:Python:howtogetvaluesfromadictionaryfrompandasseries【发布时间】:2015-07-3012:14:54【问题描述】:我对python非常陌生,并试图从字典中获取值,其中键定义在数据框列(pandas)中。我搜索... 查看详情

如何从具有多个数组的字典中获取特定键并存储到放置在表格视图单元格中的字符串中

】如何从具有多个数组的字典中获取特定键并存储到放置在表格视图单元格中的字符串中【英文标题】:Howtofetchaspecifickeyfromadictionaryhavingmultiplearraysandstoreintostringplacedintableviewcell【发布时间】:2018-06-1407:32:38【问题描述】:这是... 查看详情

如何在基于部分的表格视图中获取开关更改事件中单元格的索引路径

】如何在基于部分的表格视图中获取开关更改事件中单元格的索引路径【英文标题】:HowcanIgetindexpathofcellonswitchchangeeventinsectionbasedtableview【发布时间】:2015-02-0410:57:35【问题描述】:我有自定义单元格,在右侧的几个单元格中... 查看详情

如何在表格视图中使用滑动按钮快速获取部分标题和部分中的重复单元格?

】如何在表格视图中使用滑动按钮快速获取部分标题和部分中的重复单元格?【英文标题】:Howtouseswipebuttonintableviewforsectionheaderandrepeatedcellinthesectioninswift?【发布时间】:2021-06-0705:30:34【问题描述】:我有一个设计,其中有一个... 查看详情

如何从获取请求数组结果中构建字典?

】如何从获取请求数组结果中构建字典?【英文标题】:howtobuildadictionaryfromthefetchrequestarrayresult?【发布时间】:2017-03-2418:42:38【问题描述】:我偶然发现了一个表格视图,它包含基于实体属性和数字的多个部分。基于同一实体... 查看详情

单击集合视图单元格时如何获取表格视图部分

】单击集合视图单元格时如何获取表格视图部分【英文标题】:howtogettableviewsectionwhencollectionviewcellisclicked【发布时间】:2017-07-2506:07:31【问题描述】:[![在此处输入图片描述][1]][1]我有一个表格视图。在该表格视图中,我需要在... 查看详情

如何使用字典中的键获取索引?

...ry?【发布时间】:2013-01-1010:12:01【问题描述】:我有一个python字典的键,我想在字典中获取相应的索引。假设我有以下字典,d=\'a\':10,\'b\':20,\'c\':30在给定键值\'b\'的情况下,是否有python函数的组合以便我可以获得索引值1?d.??(\'b... 查看详情

如何在集合视图中获取装饰视图的实例?

】如何在集合视图中获取装饰视图的实例?【英文标题】:howtogettheinstanceofthedecorationviewinthecollectionview?【发布时间】:2015-04-2723:16:24【问题描述】:我已经实现了一个带有自定义布局的UICollectionView。我知道如何为整个集合视图... 查看详情

python面试必考重点之列表,元组和字典第十四关——如何使用分片获取产生器类型对象中的部分元素呢(代码片段)

面试题第十四关:第一部分——考点:学习itertools模块中的API第二部分——面试题:1.面试题一:我们知道使用分片可以获取列表的部分元素,那么我们如何使用分片获取产生器类型对象中的部分元素呢?... 查看详情

如何通过选择表格视图单元格获取字典值?

】如何通过选择表格视图单元格获取字典值?【英文标题】:Howtogetthedictionaryvaluebyselectiontableviewcell?【发布时间】:2014-05-1615:49:36【问题描述】:我有两个数组和一个字典,其中包含数字和国家,如ViewDidLoad方法所示。当用户单... 查看详情

如何在 Tkinter 树视图中显示使用 python 从 Mysql 表中获取的数据

】如何在Tkinter树视图中显示使用python从Mysql表中获取的数据【英文标题】:howcanidisplaydatainTkintertreeviewfetchedfromMysqltableusingpython【发布时间】:2016-07-2222:25:37【问题描述】:我已经使用树视图创建了一个表,我想插入从mysql表中获... 查看详情

SWIFT:在具有多个部分的表视图中显示字典时,无法将具有标识符单元格错误的单元格出列

】SWIFT:在具有多个部分的表视图中显示字典时,无法将具有标识符单元格错误的单元格出列【英文标题】:SWIFT:unabletodequeueacellwithidentifiercellerrorwhendisplayingadictionaryinatableviewwithmultiplesections【发布时间】:2015-11-1321:01:42【问题描... 查看详情

如何从python中的字典列表中获取值?

】如何从python中的字典列表中获取值?【英文标题】:Howtogetvaluesfromlistofdictionaryinpython?【发布时间】:2020-04-0917:59:40【问题描述】:我正在尝试从特定元素中获取值并将它们附加为单个列表。输入:X=["Version":"2012-10-17","Statement":... 查看详情

点击保存按钮并存储在字典中时获取表格视图单元格中的文本字段?

...】:2017-06-1615:11:15【问题描述】:我有2个部分,每16行,如何获取tableview单元格中的所有文本字段值?当我点击保存按钮时想要存储它。我已经从Firebase数据库中检索到String:AnyObj 查看详情

Python - 如何在 django 模板中为所有值并排显示两个键的字典值

】Python-如何在django模板中为所有值并排显示两个键的字典值【英文标题】:Python-Howtoshowdictionaryvaluesfromtwokeyssidebysideindjangotemplateforallvalues【发布时间】:2020-10-1911:52:40【问题描述】:假设我的django视图中有以下字典:dict_lyrics=\'... 查看详情

如何在字典中获取结构的值

】如何在字典中获取结构的值【英文标题】:HowtogetaStruct\'svalueinsideaDictionary【发布时间】:2020-10-1816:47:58【问题描述】:这里是新手程序员!我想在字典中获取嵌套结构的值,但无法访问字典。这是我的结构structForecast:Decodablele... 查看详情

Python Django:在视图中向对象添加属性还是制作数据字典更好?

】PythonDjango:在视图中向对象添加属性还是制作数据字典更好?【英文标题】:PythonDjango:inviewisitbettertoaddpropertiestoanobjectormakeadictionaryofthedata?【发布时间】:2014-01-1413:16:02【问题描述】:在这种情况下,我的模型并不重要,我想... 查看详情

如何从字典列表中获取值 - Python 3.7.1 [重复]

】如何从字典列表中获取值-Python3.7.1[重复]【英文标题】:Howtogetavaluefromalistofdictionaries-Python3.7.1[duplicate]【发布时间】:2019-06-0417:30:57【问题描述】:我的字典列表有问题。我需要从以下列表中获取比特币的价格(列表较长,但... 查看详情