python - 使用 Python 仅访问字典的一部分

标签 python

我的示例字典是这样的

data_dictionary = {1:'blue',2:'green',3:'red',4:'orange',5:'purple',6:'mauve'}

data_dictionary 可以有更多的元素,这取决于传入的数据。第一个值是我们所说的 payload_index。我总是得到 payload_index 1 到 4 。

我需要从中整理出一份 list 。很简单:

for payload_index in data_dictionary :
            assembled_packet.append(data_dictionary[payload_index])

我的问题是我需要始终跳过第三个元素。我想我可以做一个 if 但这效率很低:

for payload_index in data_dictionary :
            if payload_index <> 3:
                assembled_packet.append(data_dictionary[payload_index])

我可以分两步完成并完成前三个元素,但问题是我无法弄清楚如何获得其余部分,因为第三个元素之后的元素数量各不相同。我尝试使用一个不可能高的索引(如下),但显然失败了:

#get element 1 and two
for index in range(0,3):
            assembled_packet.append(data_dictionary[index])

#get element 1 and two
for index in range(4,999):
            assembled_packet.append(data_dictionary[index])

有什么想法吗?谢谢!

最佳答案

效率低下?这似乎是一个过早的优化!只需使用普通代码:

for payload_index in data_dictionary:
    if payload_index != 3:
        assembled_packet.append(data_dictionary[payload_index])

甚至更好:

assembled_packet = [data_dictionary[index] for index in data_dictionary if index != 3]

当然,你可以简单地做:

>>> d = {1:'blue',2:'green',3:'red',4:'orange',5:'purple',6:'mauve'}
>>> d.pop(3)
'red'
>>> list(d.values())        # in py3k; in python-2.x d.values() would do
['blue', 'green', 'orange', 'purple', 'mauve']

附言<>早就被弃用了。

关于python - 使用 Python 仅访问字典的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292509/

相关文章:

java - Gurobi:如何添加约束x1*x2*x3

python - ansible 命令仅使用绝对路径运行

python - 烛台日期索引格式化程序

python - 我可以创建一个函数来打破 python 中的 while 循环吗?

python - sklearn 内部访问 cython 类和函数

python - 确定根记录器是否在 Python 中设置为调试级别?

python - 模拟 list.insert() 方法作为 Python 列表的子类

python - 如何使用shutil复制文件并给出前缀日期

python - tmux识别了Conda env,但仍使用默认的python

python - 控制多线程程序中的解释器