Python 为什么我无法在此嵌套字典中创建其他键?
我有一个包含以下列的SQL表:Firm、Product、Alias 我只需要使用一个SQL Execute查询创建此表的数据集。 “公司”列有重复项,每个公司我只需要一本字典。每个公司都有自己的产品——公司词典中的每个产品都需要自己的词典。每个公司和产品组合都有自己的别名。别名应该位于最深层字典的列表中:Firm Dict>Product Dict>Alias listPython 为什么我无法在此嵌套字典中创建其他键?,python,sql,python-2.7,dictionary,Python,Sql,Python 2.7,Dictionary,我有一个包含以下列的SQL表:Firm、Product、Alias 我只需要使用一个SQL Execute查询创建此表的数据集。 “公司”列有重复项,每个公司我只需要一本字典。每个公司都有自己的产品——公司词典中的每个产品都需要自己的词典。每个公司和产品组合都有自己的别名。别名应该位于最深层字典的列表中:Firm Dict>Product Dict>Alias list def test(): d={} cursor=conn.cursor(如dict=True) execute('从where
def test():
d={}
cursor=conn.cursor(如dict=True)
execute('从wheremifirminfosysmapping\u v'中选择FirmName、InfoSysName、别名、wheremi\u UserId)
对于光标中的行:
如果行['FirmName']!='*':
d[行['FirmName']={}
d[行['FirmName']][行['InfoSysName']]=[]
打印d
康涅狄格州关闭
我可以返回一本看起来像这样的词典:
{u'FirmA': {u'ProductZ': []}, {u'FirmB': {u'ProductZ': []}, {u'FirmA': {u'ProductZ': []}
但是,您可以看到,只有我的SQL表中的最后一个产品被添加到公司字典中。我需要能够在SQL表中添加公司拥有的所有产品,并且只添加公司拥有的产品。您不断覆盖您创建的词典。您需要稍微更改结构并添加代码,以首先检查公司是否已添加到字典中:
def test():
d = {}
cursor = conn.cursor(as_dict=True)
cursor.execute('SELECT FirmName, InfoSysName, Alias, WhereAmI_UserId FROM WhereAmIFirmInfoSysMapping_v')
for row in cursor:
if row['FirmName'] != '*':
if row['FirmName'] not in d:
d[row['FirmName']] = {}
d[row['FirmName']][row['InfoSysName']] = []
print d
conn.close()
您不断覆盖您创建的词典。您需要稍微更改结构并添加代码,以首先检查公司是否已添加到字典中:
def test():
d = {}
cursor = conn.cursor(as_dict=True)
cursor.execute('SELECT FirmName, InfoSysName, Alias, WhereAmI_UserId FROM WhereAmIFirmInfoSysMapping_v')
for row in cursor:
if row['FirmName'] != '*':
if row['FirmName'] not in d:
d[row['FirmName']] = {}
d[row['FirmName']][row['InfoSysName']] = []
print d
conn.close()