Самый изящный способ преобразовать массив строк в словарь строк

a = np.empty([100,100])
for i in range(0,len(a)):
    for j in range(0,len(a[0])):
               if (i+j)%5 == 0:
                 print(i,j,i+j a[i][j])

вывод

0 0 0 0.0
0 5 5 0.0
0 10 10 0.0
0 15 15 0.0
0 20 20 0.0
.
. 
.

Я не знаю, что вы сделали неправильно, у вас правильная логика. Это простой цикл, в котором вы используете сам индекс в качестве теста, а не содержимое этого индекса.

42
задан shA.t 9 July 2016 в 06:28
поделиться

5 ответов

Assuming you're using .NET 3.5, you can turn any sequence (i.e. IEnumerable) into a dictionary:

var dictionary = sequence.ToDictionary(item => item.Key,
                                       item => item.Value)

where Key and Value are the appropriate properties you want to act as the key and value. You can specify just one projection which is used for the key, if the item itself is the value you want.

So for example, if you wanted to map the upper case version of each string to the original, you could use:

var dictionary = strings.ToDictionary(x => x.ToUpper());

In your case, what do you want the keys and values to be?

If you actually just want a set (which you can check to see if it contains a particular string, for example), you can use:

var words = new HashSet<string>(listOfStrings);
84
ответ дан 26 November 2019 в 23:25
поделиться

Я предположу, что вопрос имеет отношение к массивам, где ключи и оценивают альтернативу. Я столкнулся с этой проблемой при попытке преобразовать протокол советов в словарь.

private Dictionary<T, T> ListToDictionary<T>(IEnumerable<T> a)
{
    var keys = a.Where((s, i) => i % 2 == 0);
    var values = a.Where((s, i) => i % 2 == 1);
    return keys
        .Zip(values, (k, v) => new KeyValuePair<T, T>(k, v))
        .ToDictionary(kv => kv.Key, kv => kv.Value);
}
0
ответ дан 26 November 2019 в 23:25
поделиться

Для этого можно использовать LINQ, но сначала нужно ответить на вопрос, который задает Эндрю (каковы ваши ключи и значения):

using System.Linq;

string[] myArray = new[] { "A", "B", "C" };
myArray.ToDictionary(key => key, value => value);

Результатом является такой словарь:

A -> A
B -> B
C -> C
15
ответ дан 26 November 2019 в 23:25
поделиться

Если вам нужен словарь без значений, вам может понадобиться HashSet :

var hashset = new HashSet<string>(stringsArray);
5
ответ дан 26 November 2019 в 23:25
поделиться

Что вы имеете в виду?

Словарь - это хэш, где ключи сопоставляются со значениями.

Какие у вас ключи и какие у вас значения?

foreach(var entry in myStringArray)
    myDictionary.Add(????, entry);
3
ответ дан 26 November 2019 в 23:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: