我的示例字典是这样的
data_dictionary = {1:'blue',2:'green',3:'red',4:'orange',5:'purple',6:'mauve'}
Run Code Online (Sandbox Code Playgroud)
data_dictionary可以有更多元素,具体取决于传入的数据.第一个值是我们称之为payload_index的值.我总是得到payload_index 1到4.
我需要从中汇编一个列表.满容易:
for payload_index in data_dictionary :
assembled_packet.append(data_dictionary[payload_index])
Run Code Online (Sandbox Code Playgroud)
我的问题是我需要总是跳过第3个元素.我想我可以做一个if但这样效率很低:
for payload_index in data_dictionary :
if payload_index <> 3:
assembled_packet.append(data_dictionary[payload_index])
Run Code Online (Sandbox Code Playgroud)
我可以分两步完成前三个元素,但问题是我无法弄清楚如何获得其余的因为第三个元素之后的元素数量变化.我尝试使用一个不可能的高指数(下图)但显然失败了:
#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])
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
效率低吗?这似乎是一个不成熟的优化!只需使用普通代码:
for payload_index in data_dictionary:
if payload_index != 3:
assembled_packet.append(data_dictionary[payload_index])
Run Code Online (Sandbox Code Playgroud)
甚至更好:
assembled_packet = [data_dictionary[index] for index in data_dictionary if index != 3]
Run Code Online (Sandbox Code Playgroud)
当然,你可以简单地做:
>>> 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']
Run Code Online (Sandbox Code Playgroud)
PS <>早已被弃用.
| 归档时间: |
|
| 查看次数: |
1588 次 |
| 最近记录: |