擅长:python、mysql、java
<p>把你那丑陋的数据拿来吧。在</p>
<p>最好用更多的代码行来完成,这样更容易理解,但有时我无法抗拒编写这个小发明的诱惑。在</p>
<p>希望有帮助。在</p>
<pre><code>def reverse_dict(old_dict):
"""
>>> sorted(reverse_dict({(1,'a'): [2],
... (2,'b'): [3,4],
... (3,'x'): [5],
... (4,'y'): [5],
... (5,'b'): [3,4],
... (5,'c'): [6],
... }).items())
[((2, 'a'), [1]), ((3, 'b'), [2, 5]), ((4, 'b'), [2, 5]), ((5, 'x'), [3]), ((5, 'y'), [4]), ((6, 'c'), [5])]
"""
new_dict = {}
add_to_dict = new_dict.setdefault # you could use a [defaultdict][1] instead
map(lambda kv: add_to_dict(kv[0], []).append(kv[1]), # if kv[0] not in dict get [] and add to it
sum([[((x, k[1]), k[0]) for x in v] for k, v in old_dict.items()],
[])) # sum will take this to start adding
return new_dict
</code></pre>
<p>要测试代码,只需将其复制到文件<code>so.py</code>并按如下方式运行:</p>
^{pr2}$
<p>它使用<a href="http://docs.python.org/library/doctest.html" rel="nofollow">^{<cd2>}</a>来更容易地测试它是否做了您想要的。在</p>