相关疑难解决方法(0)

Python:排序列表字典

还在学习python(最后!)并且还不能完全绕过这个.我想要做的是使用列表中的第三项按值对列表进行排序.当值只是一个数字或字符串时,按值排序字典很容易,但是这个列表让我感到困惑.

例:

myDict = { 'item1' : [ 7, 1, 9], 'item2' : [8, 2, 3], 'item3' : [ 9, 3, 11 ] }
Run Code Online (Sandbox Code Playgroud)

我希望能够按照每个列表中的第三个值的顺序遍历字典,在本例中为9,3,11.

非常感谢您的帮助!

python sorting dictionary list

36
推荐指数
1
解决办法
3万
查看次数

按密钥长度排序的字典

任何人都知道如何按密钥长度对这本字典进行排序?

{
    'http://ccc.com/viewvc/' : [{'type': 'web-servers', 'app': 'Apache', 'ver': '2.2.14'}, {'type': 'operating-systems', 'app': 'Ubuntu', 'ver': None}],    
    'http://bbb.com/' : [{'type': 'web-servers', 'app': 'Apache', 'ver': '2.2.22'}, {'type': 'programming-languages', 'app': 'PHP', 'ver': '5.3.10'}, {'type': 'cms', 'app': 'Drupal', 'ver': None}, {'type': 'operating-systems', 'app': 'Ubuntu', 'ver': None}, {'type': 'javascript-frameworks', 'app': 'jQuery', 'ver': None}, {'type': 'captchas', 'app': 'Mollom', 'ver': None}]
}
Run Code Online (Sandbox Code Playgroud)

预期产量:

{
    'http://bbb.com/' : [{'type': 'web-servers', 'app': 'Apache', 'ver': '2.2.22'}, {'type': 'programming-languages', 'app': 'PHP', 'ver': '5.3.10'}, {'type': 'cms', 'app': 'Drupal', 'ver': None}, {'type': 'operating-systems', 'app': …
Run Code Online (Sandbox Code Playgroud)

python sorting dictionary ordereddictionary

4
推荐指数
2
解决办法
3018
查看次数

按值对字典进行自定义排序

我有一个简单的字典和一个列表,我想按字典中的值排序。

data_dict = {'foo' : 'one', 'bar' : 'two', 'foobar' : 'three', 'notinsort' : 'four'}

custom_sort = ['three','one','two'] 
Run Code Online (Sandbox Code Playgroud)

我自己的尝试是在排序中使用带有自定义键的字典理解:

{k:v for k,v in sorted(data_dict.items(), key=lambda i : custom_sort.index(i[1]) )}
Run Code Online (Sandbox Code Playgroud)

这将正确地返回一个ValueError: 'four' is not in list

没问题,我可以使用 lambda 中的 if-else 语句过滤掉它吗?因为我仍然希望最初按自定义排序对值进行排序,所以可以使用自然排序。

{
    k: v
    for k, v in sorted(
        data_dict.items(),
        key=lambda i: custom_sort.index(i[1])
        if [k for k in data_dict.values() if k in custom_sort] 
        else sorted(data_dict.items()),
    )
}
Run Code Online (Sandbox Code Playgroud)

这返回相同的 ValueError,我尝试过的任何变化最终都会给我一个自然的排序,忽略我的自定义键。

我想要的上述输入输出是:

data_dict = {'foobar' : 'three', 'foo' : 'one', 'bar' : …
Run Code Online (Sandbox Code Playgroud)

python sorting dictionary

1
推荐指数
1
解决办法
236
查看次数

如何使用python对dict进行排序?

关于排序我的字典我有问题.我的代码是:

x = {('S', 'A'): (5, 8), ('S', 'B'): (11, 17), ('S', 'C'): (8, 14)}

sort_x = sorted(x.items(), key=lambda kv: kv[1])
print sort_x
sort_x_dict = dict(sort_x)
print sort_x_dict
Run Code Online (Sandbox Code Playgroud)

输出:

[(('S', 'A'): (5, 8)), (('S', 'C'): (8, 14)), (('S', 'B'): (11, 17))]
{('S', 'A'): (5, 8), ('S', 'B'): (11, 17), ('S', 'C'): (8, 14)}
Run Code Online (Sandbox Code Playgroud)

python sorting dictionary

0
推荐指数
1
解决办法
59
查看次数

标签 统计

dictionary ×4

python ×4

sorting ×4

list ×1

ordereddictionary ×1