Python 2.7 Python嵌套字典键、值交换

Python 2.7 Python嵌套字典键、值交换,python-2.7,dictionary,key-value,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@ANTE

我最近开始使用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''}
我想在这里做的是将用户名密钥分配给电子邮件值,并且只有一对。 正如您所看到的,有一个dict没有用户名。看起来是这样的,因为我的数据库中没有条目。 如果有人有任何想法,我们将不胜感激。我的解决方案如下所示:

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'}    

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

new_d = {next((k for k in d.iterkeys() if k), u''): d['']}
下一个调用返回第一个非空键或空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'}