Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按元组的指定元素对具有元组键的字典进行排序_Python_Python 3.x_Sorting_Dictionary - Fatal编程技术网

Python 按元组的指定元素对具有元组键的字典进行排序

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,

我有一个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,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