还在学习python(最后!)并且还不能完全绕过这个.我想要做的是使用列表中的第三项按值对列表进行排序.当值只是一个数字或字符串时,按值排序字典很容易,但是这个列表让我感到困惑.
例:
myDict = { 'item1' : [ 7, 1, 9], 'item2' : [8, 2, 3], 'item3' : [ 9, 3, 11 ] }
Run Code Online (Sandbox Code Playgroud)
我希望能够按照每个列表中的第三个值的顺序遍历字典,在本例中为9,3,11.
非常感谢您的帮助!
任何人都知道如何按密钥长度对这本字典进行排序?
{
'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) 我有一个简单的字典和一个列表,我想按字典中的值排序。
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) 关于排序我的字典我有问题.我的代码是:
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)