【问题标题】:how to get the count of a list inside a dictionary如何获取字典中列表的计数
【发布时间】:2019-06-13 15:47:55
【问题描述】:

我有一个列表字典,我正在尝试分别计算每个列表中的项目数。例如

dictionary{

list1: item1, item8

list2: item2, item4, item7

list3: item3, item5, item6

}

代码应该说 list1 包含 2 次 list2 包含 3 个项目,依此类推

向我显示数字列表,所以在这种情况下 3 这不是我需要的: dic.values.count

还给了我列表中总数的总和,在这种情况下为 8: dic.values.sum(x => x.count)

【问题讨论】:

  • 您能重新提出您的问题吗?您目前的结果是什么,您的期望是什么?最小的工作示例也会有所帮助。
  • 欢迎来到 Stack Overflow。请提供一个minimal reproducible example,它显示了您到目前为止所尝试的内容。目前尚不清楚“代码应该说 list1 包含 2 次”等是什么意思。这将如何表示?这是一个具体的代码示例会更清楚的事情。
  • (您可能只想要dic.Values.Select(list => list.Count).ToList(),但我们目前无法确定。)
  • 所以 list1 有 2 次:item1 和 item8 这就是我的意思查看列表计算列表中的项目数,并告诉我在我的示例 list1 的情况下你数到了多少2 项列表 2 有 3 项 列表 3 有 3 项

标签: c# list dictionary count


【解决方案1】:
String report = String.Join(
    Environment.NewLine, 
    dict.Select( kvp => "List '" + kvp.Key + " has " + kvp.Value.Count.ToString("N0") + " items." )
);

或者:

String report = String.Join(
    Environment.NewLine, 
    dict.Select( kvp => $"List '{kvp.Key}' has {kvp.Value.Count:N0} items." )
);

【讨论】:

  • 这段代码不会在 C# 中编译,因为你使用了错误的双引号。然而,其余的都是正确的,一旦编辑完成,我会投票赞成。
  • @Joelius 完成。我是在 iPad 上写的。现在已经修好了。
  • 谢谢 :) 不过我有一个简单的问题.. 你为什么使用普通的 + 来连接字符串?如果您有超过 2 个加号,您不认为使用 $ 是一种更清洁的方法吗?
  • @Joelius 我同意$"" 字符串看起来更简洁,但是你会失去对格式的控制,因为它总是使用CurrentCulture 而不是InvariantCulture,或者让你指定文化或IFormatProvider .
【解决方案2】:

以下代码应该可以完成工作:

// dict is of type Dictionary<string, List<string>>
foreach(KeyValuePair<string, List<string>> entry in dict)
{
    Console.WriteLine("List " + entry.Key + " contains " + entry.Value.Count() + " items");
}

【讨论】:

  • 所以主要问题是 entry.value.count() 计算不在 1 个列表中的项目总数,因此在我的示例中将显示 8 ......我正在使用,int count = dic.value.count 无论如何都可以在没有 foreach 开销的情况下使用您的方法
  • @nj645 foreach 的“开销”是什么意思?没有真正的开销可言。
  • @Dai 在我的基本示例中实际上并没有,但是对于我的代码,我有 2 个列表,其中一个包含 6000 个项目,另一个包含 2000 个项目,我不想增加一次我想要的所有 1只能说 int x = 6000 并且如果列表 1 再获得 10 个项目 x 应该更新为 6010
  • @nj645 Dictionary&lt;K,T&gt;.Values 返回字典中值的集合,在本例中为 List&lt;string&gt; 的集合。因此,Dictionary&lt;K,T&gt;.Values.Count 返回该集合中的项目数,也就是字典中的项目数,即与 dict.Count 相同。
猜你喜欢
  • 2021-09-01
  • 2020-03-26
  • 2010-11-19
  • 1970-01-01
  • 2013-08-22
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多