python字典——将一组一项列表值转换为浮点值

python字典——将一组一项列表值转换为浮点值,python,dictionary,Python,Dictionary,我有一个简单的python初学者问题。我有一本字典,它的值由一个项目列表组成。如何从列表集中删除这些项以获得一个浮动 dict = {key1: set([1]), key2: set([3]), key3:set([4])} 预期结果: resultdict = {key1: 1, key2: 3, key3: 4} 我已经成功地从这样的列表中删除了词典,但这套词典让我很反感: for k mydict: mydict[k] = mydict[k][0] 像这样的方法应该会奏效:

我有一个简单的python初学者问题。我有一本字典,它的值由一个项目列表组成。如何从列表集中删除这些项以获得一个浮动

dict = {key1: set([1]), key2: set([3]), key3:set([4])}
预期结果:

resultdict = {key1: 1, key2: 3, key3: 4}
我已经成功地从这样的列表中删除了词典,但这套词典让我很反感:

for k mydict:
    mydict[k] = mydict[k][0]

像这样的方法应该会奏效:

resultdict = {k: next(iter(s)) for k, s in input_dict.items()}
这是因为
next(iter(s))
取集合中的“第一个”元素:

>>> s = set([1])
>>> next(iter(s))
1
请注意,您不希望对具有多个项的集合执行此操作——您永远不知道将获得哪个元素


还有其他方法:

list(s)[0]
tuple(s)[0]

也可以,但我猜它们的效率较低(尽管您必须
timeit
才能知道)。

您还可以将每个集合设置为一个列表,并通过索引进行访问:

 {k:list(v)[0] for k,v in my_dict.iteritems()}
如果你打算扔掉旧字典,你可以使用
.pop

{k:v.pop() for k,v in my_dict.iteritems()}
我不确定你是否真的想要浮点数,或者你在问题中的意思是整数,但如果你想要浮点数,只需将其转换为浮点数:

{k: float(v.pop()) for k,v in my_dict.iteritems()}

@mgilson,我认为这是最有效的,但只有在OP不想在其他地方使用旧dict的情况下才会起作用,您的
iter
解决方案总体上是最好的。