Sim*_*ker 4 language-agnostic dictionary hashmap
我有一个键和值的字典,例如:
{
fred: 1,
dave: 2,
lily: 3
}
Run Code Online (Sandbox Code Playgroud)
如何获得字典中的第二个元素 - {dave:2}在这种情况下?
背景:我已经在SO上以这样或那样的形式多次询问过这个问题了,所以我想我会写一个Q&A页面作为一个社区维基,人们可以被引用,这可能有希望成为这个的规范答案题.
此问答适用于字典,因为它们以多种不同语言实现.不同的语言使用不同的名称来指代基本相同的数据结构 - 例如,它们在Perl中称为哈希,在Python中称为词典.在Objective-C中,它们是NSDictionary或NSMutableDictionary类的实例
.
Sim*_*ker 13
简而言之,您不能 - 因为词典是 键/值对的无序集合.填充字典的顺序不会保留在内存中.这是Python中的一个简单示例:
>>> dict = { 'a': 1, 'b': 2, 'c': 3 }
>>> dict # show the value of dict in memory
{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,尽管字典是按照a,b,c的顺序初始化的,但是打印字典的值会显示它们的顺序a,c,b.即使这种排序也不会保留在内存中; 当您向字典添加更多键/值对时,上述表达式中的顺序将继续更改.
字典经过优化,可根据唯一密钥快速存储和检索值.实现方式因语言而异,但通常它的工作原理如下:
| 归档时间: |
|
| 查看次数: |
3262 次 |
| 最近记录: |