ソースコード:keys()

(メソッド dict.keys に相当する)メソッド keys の定義を含む、ソースコードの断片を次に示します。

# IronPython-1.1.2/Src/IronPython/Runtime/Dict.cs
[PythonType("dict")]
public class Dict : ... IDictionary ... {
...
[PythonName("keys")]
public List keys() {
return DictOps.Keys(this);
}

メソッド keys では、メソッド DictOps.Keys の実引数に、this を指定しています。これは、内部クラス DictOps ですべての操作を実現しているので、それに自身 this の処理を委ねるためです。このとき(Dict のインスタンス)this は、インターフェース IDictionary の規定に従うものとします。
《参照》インターフェイス IDictionary:詳細は、http://msdn.microsoft.com/en-us/library/system.collections.idictionary.aspx を参照してください。

    internal static class DictOps {
static object nullObject = new object();

public static List Keys(IDictionary self) {
List l = List.Make(self.Keys);
for (int i = 0; i < l.Count; i++) {
if (l[i] == nullObject) {
l[i] = DictOps.ObjToNull(l[i]);
break;
}
}
return l;
}

public static object ObjToNull(object o) {
if (o == nullObject) return null;
return o;
}

静的メソッド Keys では、変数 l が、そのリターン値を扱うために、リスト List を保持します。すると、次のような構造が見えてきます。

    List l = ... self.Keys ...    // IDictionary.Keys
...
return l;

プロパティー IDictionary.Keys を利用しているのが分かります。
ここでは、どのようにしてリストが得られるか(how)は知らなくても、それを使ってなにをしたいか(what)を理解できれば、十分です。self.Keys と同じ要素を持つリストが欲しいときに、List.Make を利用するだけです。