Python 按元组的指定元素对具有元组键的字典进行排序
我有一个dict的列表,dict键是元组,如:Python 按元组的指定元素对具有元组键的字典进行排序,python,python-3.x,sorting,dictionary,Python,Python 3.x,Sorting,Dictionary,我有一个dict的列表,dict键是元组,如:(0,5) 我想按照元组[1]的值对列表进行排序 我尝试使用方法的list sort的关键参数,但我不知道在lambda中放置什么,我尝试了以下方法: key=lambda k[[1]] 示例输入:[{(5,9):“item”},{(0,4):“item”}] 应为:[{(0,4):“item”},{(5,9):“item”}] 任何人都可以向我解释它是如何工作的?如果您有类似的解决方案,这里是: a = [{(0,7): 1}, {(1,
(0,5)
我想按照元组[1]的值对列表进行排序
我尝试使用方法的list sort的关键参数,但我不知道在lambda中放置什么,我尝试了以下方法:
key=lambda k[[1]]
示例输入:[{(5,9):“item”},{(0,4):“item”}]
应为:[{(0,4):“item”},{(5,9):“item”}]
任何人都可以向我解释它是如何工作的?如果您有类似的解决方案,这里是:
a = [{(0,7): 1},
{(1,5): 2},
{(4,6): 3}]
sorted(a, key=lambda x: list(x.keys())[0][1])
#[{(1, 5): 2}, {(4, 6): 3}, {(0, 7): 1}]
如果您有类似的解决方案:
a = [{(0,7): 1},
{(1,5): 2},
{(4,6): 3}]
sorted(a, key=lambda x: list(x.keys())[0][1])
#[{(1, 5): 2}, {(4, 6): 3}, {(0, 7): 1}]
有关词典列表,您可以使用:
lst = [{(5,9): "item"}, {(0,4): "item"}]
res = sorted(lst, key=lambda x: next(iter(x))[1])
[{(0, 4): 'item'}, {(5, 9): 'item'}]
术语next(iter(x))
将字典键转换为迭代器,然后调用第一项。这是因为每个字典只有一个键
请注意,正如@juanpa.arrivillaga指出的,在迭代字典的键时,不需要使用
x.keys()
,iter(x)
就足够了。对于字典列表,您可以使用:
lst = [{(5,9): "item"}, {(0,4): "item"}]
res = sorted(lst, key=lambda x: next(iter(x))[1])
[{(0, 4): 'item'}, {(5, 9): 'item'}]
术语next(iter(x))
将字典键转换为迭代器,然后调用第一项。这是因为每个字典只有一个键
请注意,正如@juanpa.arrivillaga所指出的,在迭代字典的键时,不需要使用
x.keys()
,iter(x)
就足够了。您可以尝试以下方法:
data=[{(5,9): "item"}, {(0,1): "item"},{(1,4): "item"}]
print(sorted(data,key=lambda x:list(map(lambda y:y[1],x.keys()))[0]))
输出:
[{(0, 1): 'item'}, {(1, 4): 'item'}, {(5, 9): 'item'}]
您可以尝试以下方法:
data=[{(5,9): "item"}, {(0,1): "item"},{(1,4): "item"}]
print(sorted(data,key=lambda x:list(map(lambda y:y[1],x.keys()))[0]))
输出:
[{(0, 1): 'item'}, {(1, 4): 'item'}, {(5, 9): 'item'}]
您可以发布示例输入/期望输出/您尝试过的代码输入:[{(5,9):“item”},{(0,4):“item”}]输出:[{(0,4):“item”},{(5,9):“item”}]您可以发布示例输入/期望输出/您尝试过的代码输入:[{(5,9):“item”},{(0,4):“item”}]输出:[{(0,4:“item”},{(5,9):“item”}]我尝试了你的解决方案,它给了我这个:TypeError:“dict_keys”对象不支持索引。谢谢。但我不明白为什么要在key()周围添加list()?在我看来,最好使用
next(iter(d.keys())
来提取字典的唯一键。@mg175430该部分将dict\u keys
对象转换为支持索引的list
对象。@JP好主意,明确+1我尝试你的解决方案,它给了我这个:TypeError:“dict_keys”对象不支持索引。谢谢。但我不明白为什么要在key()周围添加list()?在我看来,最好使用next(iter(d.keys())
来提取字典的唯一键。@mg175430该部分将dict\u keys
对象转换为支持索引的list
对象。@jpp好主意,definite+1