我创建了一个订单字典,但无法从中获取索引.

Accessing dictionary value by index in 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])

上述所有选项均未按参考链接中所述工作.

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

关键错误:1

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

推荐答案

在Python3中,字典(包括OrderedDict个)从keys()values()方法返回"视图"对象.这些是可编辑的,但不支持索引.您链接的答案似乎是为Python2编写的,其中keys()values()返回了列表.

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

print(list(line_1.values())[1])

另一个选项是使用itertools.islice在视图对象上迭代到所需的索引:

import itertools

print(next(itertools.islice(line_1.values(), 1, 2)))

但所有这些解决方案都相当丑陋.在这种情况下,字典可能不是最好的数据 struct .如果您的数据位于一个简单的列表中,那么按索引查找任何项都很简单(但按键查找会更困难).

Python-3.x相关问答推荐

Pandas groupby基于索引的连续列值相等

为什么我必须在绘制椭圆时代码等于两次?''

我在创建Pandas DataFrame时感到困惑

只有在Chrome尚未打开的情况下,打开Chrome后,PySimpleGUI窗口才会崩溃

可以在 Python 的上下文管理器中调用 sys.exit() 吗?

在不使用 split 函数的情况下从字符串中分割逗号(','),句号('.')和空格(' '),将字符串的单词附加到列表中

在 groupby 之后,Pandas 在特定类别中获得最常见和最后的值

Pygame 错误地渲染等距图像

使用 from re findall 组合连续匹配并分离非连续匹配

魔术8球txt文件列表

聚合(aggregate)为最多包含两个元素的列表

Python从base64转换为二进制

二进制文件的 Python 3 和 base64 编码

virtualenv virtualenvwrapper virtualenv:错误:无法识别的参数:--no-site-packages

如何在 Python 中计算 cohen 的 d?

Python中的多行日志(log)记录

如何替换 Python pathlib.Path 中的子字符串?

map 对象不是 JSON 可序列化的

为什么变量 = 对象不像变量 = 数字那样工作

在 Visual Studio Code 中调试 Scrapy 项目