我最近开始使用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'}
答案 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'}