如何使用理解来减少字典值中的集合?

How to reduce the sets in dict values using comprehension?

我有

x = {'a':set([1]) , 'b':set([2]), 'c':set([3]) }

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

{'a': 1, 'c': 3, 'b': 2}

以下作品:

x1 = {k:x[k].pop() for k in x.keys()}  OR
x1 = {k:next(iter(x[k])) for k in x.keys()}

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

在我看来,最易读的选择是使用 nextiter解包可能也没什么用,因为它更像是一种赋值操作。(参见 user2357112 的回答)

简单地说:

>>> {k: next(iter(v)) for k, v in x.items()}
{'a': 1, 'c': 3, 'b': 2}

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

{k: item for k, [item] in x.iteritems()}