Python—如何访问第一类数据
在这本词典中,我可以使用Python—如何访问第一类数据,python,python-3.x,Python,Python 3.x,在这本词典中,我可以使用NumberTextSet3[“万亿”]访问数字10000000000。 但是我如何访问字典中的最后一个单词,可能像:NumberTextSet3[-1]并让它返回“万亿”?字典没有排序,所以它没有“第一个”或“最后一个”条目。您可以按如下方式访问特定密钥: NumberTextSet3 = {"ten": 10, "hundred": 100, "thousand": 1000,
NumberTextSet3[“万亿”]
访问数字10000000000
。
但是我如何访问字典中的最后一个单词,可能像:
NumberTextSet3[-1]
并让它返回“万亿”
?字典没有排序,所以它没有“第一个”或“最后一个”条目。您可以按如下方式访问特定密钥:
NumberTextSet3 = {"ten": 10,
"hundred": 100,
"thousand": 1000,
"million": 1000000,
"billion": 1000000000,
"trillion": 1000000000000}
或:
如果要访问密钥列表,可以执行以下操作:
NumberTextSet3.get("trillion")
在我的电脑上有哪些回报:['十亿','万亿','十','千','百万','一百']
正如你所见,这里没有“顺序”。字典里没有最后一个词 要检查它,请尝试
NumberTextSet3.keys()
您将在不同的时间获得不同的排序结果
您可以稍微将数据结构修改为[(“十”,10),(“百”,100),…]
现在,您可以将其与索引一起使用
比如说,
print NumberTextSet3
输出:
a=[("ten",10),("hundred",100)]
print a[0][0]
print a[1][1]
您也可以使用
OrderedDict
这可以工作,尽管由于字典没有排序,所以不能保证
ten
100
编辑:您可能希望使用元组列表(如下所示);在这种情况下,同样的技术也会起作用,因为items()
以键/值对[tuple]的形式给出dict
NumberTextSet3.items()[-1][0]
您需要提取所有条目,然后对它们进行排序:
NumberTextSet3 = (("ten", 10),
("hundred", 100),
("thousand", 1000),
("million", 1000000),
("billion", 1000000000),
("trillion", 1000000000000))
给予:
import operator
NumberTextSet3 = {"ten": 10,
"hundred": 100,
"thousand": 1000,
"million": 1000000,
"billion": 1000000000,
"trillion": 1000000000000}
values = sorted(NumberTextSet3.items(), key=operator.itemgetter(1))
print values[-1][0]
如果要执行反向查找,则可以按如下方式创建反向映射,并使用该映射:
trillion
给予:
InverseNumberTextSet3 = {v: k for k, v in NumberTextSet3.items()}
print InverseNumberTextSet3[1000000000000]
我会使用一个像这样的命令:
trillion
Python字典没有排序保证 在实现方面,这源于这样一个事实,即字典是一个哈希映射,哈希映射的密钥顺序由哈希函数(假定为伪随机)确定 因此,虽然您可以访问字典中的第一个和最后一个项目(
NumberTextSet3.items()[0]
和NumberTextSet3.items()[-1]
),但这些可能与您创建字典的顺序不符
但是,标准库提供了保留插入顺序的
请注意,我将字典文本更改为元组列表。使用字典文本不起作用,因为这将创建一个临时的无序字典,然后将其传递给
OrderedDict
,这将冻结(准随机)顺序。那么我需要两个列表吗?一个代表“万亿”,一个代表“10000000000”?你可以看到我更新的答案。希望,这就是你想要的。所以这个问题是关于:获取字典中的最后一个值。如何访问第一类数据意味着什么?TypeError:'KeysView'对象不支持索引
Ok不适合我在Python 2.7.10上进行索引,如果在索引之前构造列表,它应该总是有效的:print list(numbertexset3.keys())[-1]
-这对你@KevinGuan有效吗?我忘了你在Python 2上了,对此我很抱歉。和列表(NumberTextSet3.keys())[-1]
将在Python 3上工作:P@KevinGuan谢谢你的尝试:)我更新了答案。
trillion
from collections import OrderedDict
NumberTextSet3 = OrderedDict([("ten", 10),
("hundred", 100),
("thousand", 1000),
("million", 1000000),
("billion", 1000000000),
("trillion", 1000000000000)])
# On Python2 this will work:
print NumberTextSet3.keys()[-1]
# This is a little bit longer but will work in Python2 and Python3:
print list(NumberTextSet3.keys())[-1]
from collections import OrderedDict
NumberTextSet3 = OrderedDict((
("ten", 10),
("hundred", 100),
("thousand", 1000),
("million", 1000000),
("billion", 1000000000),
("trillion", 1000000000000)
))
print(list(NumberTextSet3.keys()))
=> ['ten', 'hundred', 'thousand', 'million', 'billion', 'trillion']
print(list(dict(NumberTextSet3).keys()))
=> ['million', 'hundred', 'ten', 'billion', 'thousand', 'trillion']