NumberTextSet3 = {"ten": 10,
"hundred": 100,
"thousand": 1000,
"million": 1000000,
"billion": 1000000000,
"trillion": 1000000000000}
在此词典中,我可以使用1000000000000
访问号码NumberTextSet3["trillion"]
。
但是我如何访问字典中的最后一个单词,可能是:NumberTextSet3[-1]
并让它返回"trillion"
?
答案 0 :(得分:1)
字典中没有最后一个字。
要检查它,请尝试
print NumberTextSet3
您将在不同的时间获得不同的有序结果。
您可以稍微修改数据结构为[("ten",10),("hundred",100),...]
现在,您可以将其与索引一起使用。
例如,
a=[("ten",10),("hundred",100)]
print a[0][0]
print a[1][1]
输出:
ten
100
您也可以使用OrderedDict
答案 1 :(得分:1)
我会像这样使用OrderedDict:
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]
答案 2 :(得分:0)
字典不是有序的,所以它没有“第一个”或“最后一个”条目。您可以访问特定密钥,如下所示:
NumberTextSet3["trillion"]
或:
NumberTextSet3.get("trillion")
如果您想访问您可以执行的按键列表:
NumberTextSet3.keys()
返回我的电脑:['billion', 'trillion', 'ten', 'thousand', 'million', 'hundred']
如你所见 - 这里没有“订单”。
答案 3 :(得分:0)
这可以工作,但由于没有订购词典,因此无法保证。
NumberTextSet3.items()[-1][0]
编辑:你可能想要使用元组列表(下面);在这种情况下,相同的技术将起作用,因为items()
给出了键/值对[元组]中的字典。
NumberTextSet3 = (("ten", 10),
("hundred", 100),
("thousand", 1000),
("million", 1000000),
("billion", 1000000000),
("trillion", 1000000000000))
答案 4 :(得分:0)
您需要提取所有条目,然后对它们进行排序:
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
答案 5 :(得分:0)
Python词典没有订购保证。
实现方面,这源于这样一个事实:字典是一个哈希映射,而哈希映射的密钥排序由哈希函数决定(假设是伪随机的)。
因此,虽然您可以分别访问字典中的第一个和 last 项目(NumberTextSet3.items()[0]
和NumberTextSet3.items()[-1]
),但这些可能不会对应于您创建字典的顺序。
但是,标准库提供了collections.OrderedDict
,保留了广告订单,因此
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']
请注意我将字典文字更改为元组列表的事实。使用字典文字是行不通的,因为这会创建一个临时的,无序的字典,而不是将其传递给OrderedDict
,这会冻结(准随机)顺序。