按嵌套字典值排序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按嵌套字典值排序?相关的知识,希望对你有一定的参考价值。

var userInformation = new Dictionary<string, Dictionary<string, int>>();

我需要一个等于这个的新词典,但首先按键然后按值的值排序。我试过了:

var resultInformation = userInformation.OrderBy(k => k.Key).ThenBy(v => v.Value.OrderByDescending(x => x.Value));

我尝试了其他一些方法但没有效果。

答案

字典没有排序,但您可以轻松生成字典中的项目列表/集合,如下所示:

var resultInformation = from outer in userInformation
                        from inner in outer.Value
                        let data = new { Outer = outer.Key, Inner = inner.Key, Value = inner.Value }
                        orderby data.Outer, data.Inner, data.Value
                        select data;

或者查询语法等价:

var resultInformation = userInformation
    .SelectMany(i => i.Value, (key, inner) => new { Outer = key, Inner = inner.Key, Value = inner.Value})
    .OrderBy(e => e.Outer)
    .ThenBy(e => e.Inner)
    .ThenBy(e => e.Value);

更新:根据您的澄清评论,我认为您真正想要的是更像这样的东西:

var resultInformation = 
    from student in userInformation
    orderby student.Key
    select new
    {
        studentId = student.Key,
        courses = 
            from courseScore in student.Value
            orderby courseScore.Value descending
            select new {
                course = courseScore.Key,
                score = courseScore.Value
            }
    };

以上是关于按嵌套字典值排序?的主要内容,如果未能解决你的问题,请参考以下文章

如何按值和键的多个条件对嵌套字典进行排序?

python 字典排序

列表中嵌套字典,根据字典的值排序

在Python中按值对嵌套字典进行排序,并按另一个值对余数进行排序

将字典嵌套在另一个字典中,按 Pandas Dataframe 中的值分组

嵌套字典:按日期分组,然后按枚举值分组并汇总计数