Python嵌套字典键,值交换

时间:2014-08-12 15:08:37

标签: python-2.7 dictionary key-value

我最近开始使用Python,并且通过以下示例,我花了很多时间来解决这个问题,所以我决定问你们是否可以提供帮助。

所以,我有一个包含用户名和电子邮件对的词典但我的问题是,因为它不是一个单独的键:值对,我无法将它们合并为一个。

9978 {u'': u'TERRY.HERREGON@EXAMPLE.COM', u'USD38020': u''}
9979 {u'': u'REMKO.VON.DER.WURF@ABV.COM', u'GELREM01': u''}
9980 {u'': u'MARTIN.YGOR@ANTEL.COM'}
9981 {u'': u'DON.VASSILLI@TEST.COM', u'AUVASSILIDE': u''}
9982 {u'': u'JAMES.WOJOCICK@SUN.COM', u'JAMES.WOJCIK': u''}
9983 {u'': u'DANIEL.MUCHANA@JAVA.COM', u'DEHDAMU': u''}

我想在这里做的是将用户名密钥分配给电子邮件值,并且只有一对。 正如您所看到的,有一个没有用户名的字典。它看起来像是因为我的数据库中没有条目。 如果有人有任何想法,将不胜感激。我的解决方案看起来像这样:

9978 {u'USD38020': u'TERRY.HERREGON@EXAMPLE.COM'}
9979 {u'GELREM01': u'REMKO.VON.DER.WURF@ABV.COM'}
9980 {u'': u'MARTIN.YGOR@ANTEL.COM'}
9981 {u'AUVASSILIDE': u'DON.VASSILLI@TEST.COM'}
9982 {u'JAMES.WOJCIK': u'JAMES.WOJOCICK@SUN.COM'}
9983 {u'DEHDAMU': u'DANIEL.MUCHANA@JAVA.COM'}    

1 个答案:

答案 0 :(得分:0)

您需要在每个字典中搜索非空的键,然后使用空字符串键中的值创建新字典:

new_d = {next((k for k in d.iterkeys() if k), u''): d['']}

next()调用返回第一个非空键或空u''字符串。该值始终设置为d['']

演示:

>>> sample = [
...     {u'': u'TERRY.HERREGON@EXAMPLE.COM', u'USD38020': u''},
...     {u'': u'REMKO.VON.DER.WURF@ABV.COM', u'GELREM01': u''},
...     {u'': u'MARTIN.YGOR@ANTEL.COM'},
...     {u'': u'DON.VASSILLI@TEST.COM', u'AUVASSILIDE': u''},
...     {u'': u'JAMES.WOJOCICK@SUN.COM', u'JAMES.WOJCIK': u''},
...     {u'': u'DANIEL.MUCHANA@JAVA.COM', u'DEHDAMU': u''},
... ]
>>> for d in sample:
...     print {next((k for k in d.iterkeys() if k), u''): d['']}
... 
{u'USD38020': u'TERRY.HERREGON@EXAMPLE.COM'}
{u'GELREM01': u'REMKO.VON.DER.WURF@ABV.COM'}
{u'': u'MARTIN.YGOR@ANTEL.COM'}
{u'AUVASSILIDE': u'DON.VASSILLI@TEST.COM'}
{u'JAMES.WOJCIK': u'JAMES.WOJOCICK@SUN.COM'}
{u'DEHDAMU': u'DANIEL.MUCHANA@JAVA.COM'}