字典值中的排序列表[重复]

Posted

技术标签:

【中文标题】字典值中的排序列表[重复]【英文标题】:Sort List in Dictionary's Value [duplicate] 【发布时间】:2015-04-01 02:17:22 【问题描述】:

我正在处理我定义以下字典的任务

Dictionary<string, List<fileInfo>> myDic = new Dictionary<string, List<fileInfo>>();

在哪里

public class fileInfo
    
        public string fileFullName;
        public double tf;
        public double idf;
        public double tf_idf;
        public double cosineSim;

        public fileInfo()
        
            fileFullName = null;
            tf = 0.0;
            idf = 0.0;
            tf_idf = 0.0;
            cosineSim = 0.0;
        
    

现在我想根据 COSINESIM 对列表进行排序

【问题讨论】:

那么做吧,谷歌搜索将比在 SO 上提问花费更少的时间。相关的第一篇文章正是您想要的。 您尝试过的任何代码? 我全心全意地帮助别人......但是哦,天哪,你表现出完全没有任何努力来解决你的家庭作业。 【参考方案1】:

如果您想获得按 cosineSim 排序的 fileInfo 的组合(合并)列表,您可以使用 Dmitry 的答案。

如果您想对字典中每个列表中的项目进行排序,您可以使用

myDic.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.OrderBy(fi => fi.cosineSim).ToList());

【讨论】:

【参考方案2】:

如果您想获得按cosineSim 排序的fileInfo组合(合并)列表,您可以这样做

  List<fileInfo> result = myDic.Values
    .SelectMany(item => item)        // amalgamating all the lists   
    .OrderBy(item => item.cosineSim) // ordering the result
    .ToList();    

如果您想对 每个 列表 within myDic 字典进行排序,只需 Sort 他们:

  foreach(var list in myDic.Values)
    list.Sort(Comparer<fileInfo>.Create((left, right) => 
      left.cosineSim.CompareTo(right.cosineSim)));

【讨论】:

我真的非常感谢“我的老师”:我在最后一个连接 5 到 6 小时内一直在努力,但一切都是徒劳的......你真的解决了我的问题

以上是关于字典值中的排序列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将嵌套字典列表与它们的值中的公共键相加? [复制]

如何比较字典值中的多个数组,并将每个数组元素的字典键映射到新数组/列表中

如何按字典中的值对字典列表进行排序? [复制]

python按自定义顺序排序字典列表[重复]

对无法正常使用双打的字典列表进行排序[重复]

按特定键的降序对字典列表进行排序[重复]