【问题标题】:How to get Key, Value from dictionary when value is a list当值是列表时如何从字典中获取键、值
【发布时间】:2015-09-05 21:24:18
【问题描述】:

所以基本上我有一个字典,我有一个键,然后值是一个包含字符串的列表..例如..

{"key1", list1}
list1 = [Value 1 Value2, Value3]

而且我有多个键,因此具有列表的值。 我想显示它以便它显示

Key1: Value1
Key1: Value2
Key1: Value3

所以我希望能够显示键和值。但我不确定如何做到这一点。

foreach (var value in FoodCategory_Item.Values)
{
    foreach(var item in value)
    {
        Console.WriteLine("Value of the Dictionary Item is: {0}", item);
    }
}

这就是我目前所拥有的,即迭代值,我知道该怎么做,但我不确定如何在那里获取键值,因为它会首先迭代所有值,然后遍历关键项..

【问题讨论】:

  • 如果您也需要键,请不要遍历 Values :) 只需遍历字典(每个元素都是一个键值对),然后在其中遍历所有值那把钥匙。

标签: c# dictionary key keyvaluepair


【解决方案1】:

这应该可行:

foreach (KeyValuePair<string, List<string>> kvp in FoodCategory_Item)
{
    foreach (string item in kvp.Value)
    {
        Console.WriteLine ("{0}: {1}", kvp.Key, item);
    }
}

Dictionary 实现了IEnumerable&lt;KeyValuePair&lt;TKey, TValue&gt;&gt;,因此您可以直接对其进行迭代。

【讨论】:

  • 哇,非常感谢!我认为由于我正在遍历密钥,因此密钥不会留下来,它会移动到下一个密钥。真的很感激!
  • @user3827175:没问题,很高兴为您提供帮助
【解决方案2】:

Dictionary 是可枚举的,所以迭代一下:

foreach (var kvp in FoodCategory_Item)
{
     foreach(var item in kvp.Value)
     {
         Console.WriteLine("Value of the Dictionary Key {0} is: {1}", kvp.Key ,item);
     }
}

【讨论】:

    【解决方案3】:

    如果你查看documentation for Dictionary,你会注意到它实现了接口

    IEnumerable<KeyValuePair<TKey, TValue>>
    

    因此,您可以执行以下操作:

    foreach(KeyValuePair<TKeyType, TValueType> kvp in dictionary)
    {
        foreach(var item in kvp.Value)
        {
            Console.WriteLine("{0}: {1}", kvp.Key, item);
        }
    }
    

    在此处给出的示例代码中,将 TKeyType 替换为字典中使用的键的实际类型,并将 TValueType 替换为用于值的列表类型字典。

    【讨论】:

      猜你喜欢
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2018-12-03
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多