在python中订购字典索引

Vis*_*shy 10 python dictionary python-3.x

我创建了一个订单字典,无法从中获取索引.我已经通过了以下网址但没有工作.

在python中通过索引访问字典值

这是我的代码和输出.

line_1 = OrderedDict((('A1', "Miyapur"), ('A2', "JNTU College"), ('A3', "KPHB Colony"),
                ('A4', "Kukatpally"), ('A5', "Balanagar"), ('A6', "Moosapet"),
                ('A7', "Bharat Nagar"), ('A8', "Erragadda"), ('A9', "ESI Hospital"),
                ('A10', "S R Nagar"), ('X1', "Ameerpet"), ('A12', "Punjagutta"),
                ('A13', "Irrum Manzil"), ('A14', "Khairatabad"), ('A15', "Lakdikapul"),
                ('A16', "('Assembly"), ('A17', "Nampally"), ('A18', "Gandhi Bhavan"),
                ('A19', "Osmania Medical College"), ('X2', "MG Bus station"), ('A21', "Malakpet"),
                ('A22', "New Market"), ('A23', "Musarambagh"), ('A24', "Dilsukhnagar"),
                ('A25', "Chaitanyapuri"), ('A26', "Victoria Memorial"), ('A27', "L B Nagar")))

print(line_1.values()[1])
print(line_1[1])
print(line_1.keys()[1])
Run Code Online (Sandbox Code Playgroud)

以上所有选项均无法在引用的链接中提及.任何指导都非常感谢.以下是给定顺序中每个print语句的输出.

TypeError:'odict_values'对象不支持索引

KeyError:1

TypeError:'odict_keys'对象不支持索引

Blc*_*ght 23

在Python 3中,字典(包括OrderedDict)从它们keys()values()方法返回"视图"对象.这些是可迭代的,但不支持索引.您链接的答案似乎是为Python 2编写的,其中keys()values()返回的列表.

有几种方法可以使代码在Python 3中运行.一个简单(但可能很慢)的选项是将视图对象传递给list()它,然后将其编入索引:

print(list(line_1.values())[1])
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用itertools.islice迭代视图对象到所需的索引:

import itertools

print(next(itertools.islice(line_1.values(), 1, 2)))
Run Code Online (Sandbox Code Playgroud)

但所有这些解决方案都非常难看.字典可能不是您在这种情况下使用的最佳数据结构.如果您的数据位于一个简单的列表中,那么按索引查找任何项目都是微不足道的(但按键查找会更难).


Jim*_*ard 5

类型错误:'odict_values' 对象不支持索引

你需要list先把它变成一个然后访问它:

print(list(line_1.values())[1]) # or print([*line_1.values()][1])
Run Code Online (Sandbox Code Playgroud)

这些view(Python 3 中的新)对象更像是不支持索引它们的集合。

密钥错误:1

1不在有序字典中,因此KeyError. 使用有效的密钥一样'A1

类型错误:'odict_keys' 对象不支持索引

和以前一样,将其设为 alist以对其进行索引。


同样适用于line_1.items,为了对其进行索引,您应该首先将其转换为支持索引的对象(listtuple、自定义等)