从Python 3中的列表中嵌入dict中拉出元素

时间:2014-11-12 22:25:51

标签: list python-3.x tuples python-ldap

TL:DR版本:

尝试根据它的索引从dict(Edited out:tuple)中拉出一个列表。即{'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帐户属性的值。它看起来像:

  

{'department':['DepartmentName'],'memberOf':   [ 'CN =示例,OU的,= DC =域,DC = COM',   CN =示例,OU =的,DC =域,DC = COM']}

我试图分别提取与department和memberOf相关的值。我认为这是一个嵌入式元组的元组,其中嵌入式元组的第二个元素是一个列表......但我不确定所以我无法弄清楚如何解析数据。

我创建了一个类,最终将用户放入。索引编码:

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是列表的索引。

1 个答案:

答案 0 :(得分:1)

{'a': [1,2], 'b':[3,4]},LDAP数据结构{'department': ['DepartmentName'], 'memberOf': ['CN=example,OU=of,DC=domain,DC=com', 'CN=example,OU=of,DC=domain,DC=com']}是键值决策。通过密钥检索值。

d = {'department': ['DepartmentName'],
     'memberOf': ['CN=example,OU=of,DC=domain,DC=com',
                  'CN=example,OU=of,DC=domain,DC=com']}
dept = d['department']  # access by key
mem = d['memberOf']
print("dept = {}\nmem = {}".format(dept, mem))

如果还没有,我建议您阅读有关词典的教程和库手册部分。