如何使用理解减少dict值中的集合?

ViF*_*iFI 2 python dictionary python-2.7 functools iterable-unpacking

我有

x = {'a':set([1]) , 'b':set([2]), 'c':set([3]) }
Run Code Online (Sandbox Code Playgroud)

保证集合中只有一个元素.我需要将其转换为

{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

以下作品:

x1 = {k:x[k].pop() for k in x.keys()}  OR
x1 = {k:next(iter(x[k])) for k in x.keys()}
Run Code Online (Sandbox Code Playgroud)

但我不喜欢它,因为pop()这里正在修改原始集合.我需要帮助.

  • 如何 在理解中使用此处提到的拆包.
  • 有什么办法,我可以用functools.reduce它.
  • 什么可以是更好或Pythonic的方式来做这个整体?

use*_*ica 6

如果你想通过拆包来做到这一点,那就是

{k: item for k, [item] in x.iteritems()}
Run Code Online (Sandbox Code Playgroud)

  • @ChihebNexus:确实会,但这个问题被标记为2.7. (2认同)