js的object的key是不是有顺序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的object的key是不是有顺序相关的知识,希望对你有一定的参考价值。
参考技术A 两者并没有先后的顺序,两者的关系是function属于object类型,即函数属于对象类型,在javascript中有两种大的数据类型一种是基本数据类型,一种是对象数据类型‘1、基本的数据类型:字符串、数字、布尔、数组、对象、Null、Undefined。函数属于对象数据类型。
2、一些特殊的关系:
一般javascript中是使用构造函数来创建对象如下:
<script type="text/javascript">
window.onload=function()
function test(name,age,sex)
this.name=name;
this.age=age;
this.sex="男";
this.printer=function()
alert(this.name);
alert(this.age);
alert(this.sex);
var x=new test("tom","19","男");
x.printer()
</script>本回答被提问者采纳 参考技术B 没有顺序,但是可以按照key排序
按自然顺序对字典键进行排序[重复]
【中文标题】按自然顺序对字典键进行排序[重复]【英文标题】:Sort Dictionary Keys in natural order [duplicate] 【发布时间】:2014-08-02 06:55:43 【问题描述】:我想按“自然顺序”对字典键进行排序。如果我有一本带钥匙的字典
d = "key1" : object, "key11" : object, "key2" : object, "key22" : object", "jay1" : object, "jay2" : object
我想对这个字典进行排序,结果是:
d = "jay1" : object, "jay2" : object, "key_1" : object, "key_2" : object, "key_11" : object, "key_22" : object"
【问题讨论】:
使用docs.python.org/2/library/… 字典未排序。您无法控制字典键的顺序。 您是在问如何“对字典进行排序”(在这种情况下问题是重复的)还是如何按自然顺序对(任何内容)进行排序(很确定它是重复的)? 我不相信这是重复的,因为它被标记为重复的问题是关于标准排序的,而这个问题是关于自然排序的。 【参考方案1】:你可以把你的字典改成OrderedDict:
import collections, re
d = "key1" : 'object', "key11" : 'object', "key2" : 'object', "key22" : 'object', "jay1" : 'object', "jay2" : 'object'
my_fun = lambda k,v: [k, int(v)]
d2 = collections.OrderedDict(sorted(d.items(), key=lambda t: my_fun(*re.match(r'([a-zA-Z]+)(\d+)',t[0]).groups())))
print(d2)
#reslt: OrderedDict([('jay1', 'object'), ('jay2', 'object'), ('key1', 'object'), ('key11', 'object'), ('key2', 'object'), ('key22', 'object')])
基本上,这里发生了什么,我将字符串分成“字符串”部分和数字部分。数字部分更改为int
,并使用这两个值进行排序。
【讨论】:
这不会按自然顺序对键进行排序。 @user2909250 抱歉,我修改了示例以包含缺失的“自然”顺序。 您可以通过使用natsort.natsorted
来避免冗长的lambda
和正则表达式。【参考方案2】:
正如其他人所说,字典没有顺序。但是,如果您想以自然顺序遍历这些键,则可以执行以下操作:
d = "key1" : object, "key11" : object, "key2" : object, "key22" : object, "jay1" : object, "jay2" : object
sortedKeys = sorted(d.keys())
print sortedKeys
for key in sortedKeys:
print d[key]
【讨论】:
【参考方案3】:在 Python 中,'a': object, 'b': object
与 'b': object, 'a': object
完全相同,因为字典没有排序。
【讨论】:
【参考方案4】:您不能订购dictionaries
,因为他们的顺序看似是任意的(实际上并非如此)。相反,您可以使用natsort.natsorted()
对items()
进行排序:
d = "key1" : object, "key11" : object, "key2" : object, "key22" : object, "jay1" : object, "jay2" : object
print natsort.natsorted(d.items()) #[('jay1', <type 'object'>), ('jay2', <type 'object'>), ('key1', <type 'object'>), ('key2', <type 'object'>), ('key11', <type 'object'>), ('key22', <type 'object'>)]
【讨论】:
这不会按自然顺序对键进行排序。 @user2909250 现在可以了 :)以上是关于js的object的key是不是有顺序的主要内容,如果未能解决你的问题,请参考以下文章