Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Sayanchik777
8 / 8 / 6
Регистрация: 09.05.2015
Сообщений: 448
1

Dictionary - Поиск ключа по значению

15.01.2018, 17:36. Просмотров 1202. Ответов 7
Метки нет (Все метки)

По ключу значения ключа найти - это понятно, а как найти ключ по значению?
что бы к примеру в слове "Два" найти какая цифра отвечает этому слову.

1 вариант это путем перебора каждого элемента.
Думаю есть метод который возвращает ключ для указаного значения

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp31
{
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<int, string> dic = new Dictionary<int, string>();
            dic.Add(0, "Ноль");
            dic.Add(1, "Один");
            dic.Add(2, "Два");
            dic.Add(3, "Три");
            Console.WriteLine(dic[2]);
 
 
            Console.ReadLine();
        }
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2018, 17:36
Ответы с готовыми решениями:

MyDictionary: сортировка по ключу, поиск значения по ключу, поиск ключа по значению
Задан интерфейс ІMyDictionary. Его реализует класс MyDictionary, который...

Работа с Dictionary. Получение ключа по индексу
У меня есть 2 массива Dictionary&lt;int, double&gt; dict1 и dict2 Нужно сделать...

Метод поиска элемента в списке по значению ключа
Может у кого завалялся простой пример с методом поиска в списке? using...

Сортировка Dictionary по длине ключа
Есть словарь public Dictionary&lt;string, string&gt; Combination = new...

Безопасное добавление ключа в Dictionary из другого потока
Добрый день! System.Collections.Generic являются threadsafe для чтения, но...

7
aquaMakc
472 / 385 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
15.01.2018, 17:45 2
Лучший ответ Сообщение было отмечено Sayanchik777 как решение

Решение

C#
1
int k = dic.Where(x => x.Value == "Ноль").FirstOrDefault().Key;
1
Sayanchik777
8 / 8 / 6
Регистрация: 09.05.2015
Сообщений: 448
15.01.2018, 18:17  [ТС] 3
Цитата Сообщение от aquaMakc Посмотреть сообщение
int k = dic.Where(x => x.Value == "Ноль").FirstOrDefault().Key;
а что означает это выражение?X это кака ято то функция которая принимает стринг и возвращает число?
0
aquaMakc
472 / 385 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
16.01.2018, 09:54 4
Цитата Сообщение от Sayanchik777 Посмотреть сообщение
а что означает это выражение?
Это LINQ с использованием лямбда-выражения.
Здесь я из твоей коллекции выбираю все элементы, у которых value соответствует строке "Ноль", беру из получившегося перечисления первое значение (или нуль, если коллекция пуста) и возвращаю key.
Выражение упрощено до предела, а потому потенциально опасно. Если в твоей коллекции нет элементов со значением "Ноль" - программа упадёт в Null исключение.
1
Sayanchik777
8 / 8 / 6
Регистрация: 09.05.2015
Сообщений: 448
16.01.2018, 18:21  [ТС] 5
aquaMakc, спасибо, очень розжовано. теперь еще проработаю LINQ - и познакомлюсь с лямда выражениями.
Цитата Сообщение от aquaMakc Посмотреть сообщение
Выражение упрощено до предела, а потому потенциально опасно.
а в чем опастно?
0
aquaMakc
472 / 385 / 68
Регистрация: 14.02.2014
Сообщений: 1,883
Завершенные тесты: 1
16.01.2018, 18:22 6
Sayanchik777, я же написал
0
willow300
106 / 118 / 85
Регистрация: 30.10.2016
Сообщений: 257
16.01.2018, 18:53 7
Sayanchik777, возможно Вам подойдет вариант с использованием индексаторов - Два массива, найти слово и вывести на консоль вместе с переводом. Здесь предусмотрены ситуации отсутствия в словаре необходимого слова и выход за пределы массива.
0
Diamante
1271 / 1026 / 650
Регистрация: 14.08.2016
Сообщений: 3,556
Завершенные тесты: 1
17.01.2018, 01:06 8
Sayanchik777, а зачем такое понадобилось?
если в "софтине" такое нужно постоянно, то Dictionary не есть the best...
0
17.01.2018, 01:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2018, 01:06

Dictionary(TKey, TValue).ContainsKey сравнение по значению
есть некоторые полиморфные объекты от одного базового класса Item, потому...

Узнать, есть ли в Dictionary искомый ключ, если есть, то вернуть ссылку на экземпляр ключа
Здравствуйте, у меня есть Dictionary: Dictionary&lt;Keys, List&lt;string&gt;&gt; Mass =...

Линейные динамические структуры: разделить упорядоченный список на два списка по заданному значению ключа
Разделить упорядоченный список на два списка по заданному значению ключа:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru