TL:DR バージョン:
インデックスに基づいて辞書 (編集: タプル) からリストを取得しようとしています。すなわち{'a': [1,2], 'b':[3,4]}
... aまたはbにそれぞれ関連付けられたリストを返す方法を見つけようとしています。
回答済み:
MyDict = {'a': [1,2], 'b':[3,4]}
print(MyDict['a'])
[1,2]
print(MyDict['b'])
[3,4]
コンテキスト付きの実際のバージョン:
python3-ldap は、よくわからないデータ構造で LDAP アカウントの属性の値を返します。次のようになります。
{'部門': ['部門名'], 'memberOf': ['CN=例,OU=の,DC=ドメイン,DC=com', 'CN=例,OU=の,DC=ドメイン,DC=com ']}
department と memberOf に関連付けられた値を別々に取り出そうとしています。これは、埋め込まれたタプルの2番目の要素がリストである埋め込みタプルを含むタプルだと思います...しかし、よくわからないので、データを解析する方法を理解できませんでした。
最終的にユーザーをドロップするクラスを作成しました。索引付けのコード:
class Associates:
def __init__(self, index, name, department, membergrp):
self.i = index
self.n = name
self.d = department
self.m = membergrp
検索を行うコードは次のとおりです。
result = c.search(searchDC, criteria, SEARCH_SCOPE_WHOLE_SUBTREE, attributes = ['department','memberOf'])
if result:
for r in c.response:
if (r['type'] == 'searchResEntry'):
a.append(Associates(len(a)+1,(r['dn']), r['attributes'],r['attributes']))
else:
pass
...ここで、'a' は空のリストです。
回答済み:
クエリを変更できません。両方の選択に r['attributes'] を含める必要があります。ただし、選択がrで返される場合、それらは次のように解析できます...
print ('Department is:', a[k].d['department'])
print ('Member groups are: ', a[k].m['memberOf'])
ここで、k はリストのインデックスです。