F #: перебор словаря просто возвращает себя? - PullRequest
0 голосов
/ 08 октября 2011
let h = dict [(1, 2), (3, 4)]
Console.WriteLine(h.Count)
for i in h do
    Console.WriteLine(i)

дает мне

1
[(1, 2), (3, 4)]

Два вопроса. Во-первых, почему итерация по dict возвращает мне последовательность, которая имеет только 1 элемент, сам dict? Возможно, в этом есть некоторая логика, которая также повлияет на другие вещи, которые я пытаюсь повторить. Что это значит для всех остальных членов Seq, представленных dict (Any (), All (), Aggregate () и т. Д.)?

Во-вторых, есть ли хороший способ перебирать и вообще манипулировать парами ключ-значение в словаре, как в Python?

1 Ответ

11 голосов
/ 08 октября 2011

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

[(1,2); (3,4)]

Запятые для кортежей, точки с запятой для элементов списка.(Парень здесь не обязателен)активный паттерн.

...