无法预测iterkeys()的输出ord

2024-10-01 22:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

问题:为什么退出出现在输出的第一行?在


在这篇文章的开头,我先说,我是在尝试用我正在编写的python脚本解决某个特定问题时编写的这段代码。所以,是的,我知道这段代码看起来很难看。在

我不明白为什么先显示退出。我甚至尝试过将“退出”:“EXIT”移到dict的开头(在“Settings”之前),但它仍然显示相同的内容。我不知道这是和它的本质有关,还是跟字典的性质有关。在

起初,我猜测这可能与以下事实有关,即mmenu['Quit']是一个字符串,mmenu['Settings']是一个dict,但后来我注意到以下是如何按此顺序输出的:

Rename: Enter a new name
Where?
Delete: Select Menu Item to Delete

当它们被编码为:

'Rename': 'Rename: Enter a new name', 
'Delete': 'Delete: Select Menu Item to Delete', 
'Move_Item': 'Where?'

但我不明白为什么这很重要。在

任何见解都值得赞赏:)

^{pr2}$

输出:

EXIT
create function: you've just created a menu
Rename: Enter a new name
Where?
Delete: Select Menu Item to Delete
Default Settings

Tags: to代码namenewsettingsexititemwhere
1条回答
网友
1楼 · 发布于 2024-10-01 22:30:28

以下是Python用于为dict创建订单的方法:

  1. 在内存中创建一个比dict大的列表,dict的大小相当于幂 共2个(例如32个)
  2. 从dict中散列字符串
  3. 使用掩码检索每个哈希的一小部分(例如hash('x')&31)
  4. 使用此值作为在列表中存储原始字符串的索引

列表中的几个位置将是空的,因此此方法不能有效地使用内存,但这意味着可以使用二进制搜索在一个计算设备中检索字典中任何项的位置。(例如hash('x')&31==键['x']的索引)

这里有一个很好的过程描述: http://www.laurentluce.com/posts/python-dictionary-implementation/

相关问题 更多 >

    热门问题