我已经创建了一个字典列表:
l = []
d = {"a":1,"b",2}
l.append(d)
d = {"a":5,"b":6}
l.append(d)
d = {"a":3,"b":4}
l.append(d)
现在,我该如何检查字典列表是否按照键 a
或键 b
排序?
我已经创建了一个字典列表:
l = []
d = {"a":1,"b",2}
l.append(d)
d = {"a":5,"b":6}
l.append(d)
d = {"a":3,"b":4}
l.append(d)
现在,我该如何检查字典列表是否按照键 a
或键 b
排序?
print(l == sorted(l, key=lambda d:d["a"]))
False
如果要检查是否已排序,请使用默认检查,但在比较之前先进行索引:
k = "a"
all(l[i][k] <= l[i+1][k] for i in range(len(l) - 1))
如这个答案所述,您可以使用以下方法高效地检查列表是否已排序:
all(l[i] <= l[i+1] for i in xrange(len(l)-1))
def is_sorted(iterable, key=None):
if key is None:
key = lambda x : x
return all(key(iterable[i]) <= key(iterable[i+1]) for i in xrange(len(iterable)-1))
a
和b
的字典),例如:# Check if list of dictionaries are sorted by value of 'a'
>>> is_sorted(l, key=lambda x: x["a"])
# Check if list of dictionaries are sorted by value of 'b'
>>> is_sorted(l, key=lambda x: x["b"])
# Check if list of dictionaries are sorted by value of 'a', then 'b'
>>> is_sorted(l, key=lambda x: (x["a"], x["b"]))