【问题标题】: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 上提问花费更少的时间。相关的第一篇文章正是您想要的。
  • 您尝试过的任何代码?
  • 我全心全意地帮助别人......但是哦,天哪,你表现出完全没有任何努力来解决你的家庭作业。

标签: c#


【解决方案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 小时内一直在努力,但一切都是徒劳的......你真的解决了我的问题
    猜你喜欢
    • 2019-06-19
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2013-02-19
    相关资源
    最近更新 更多