python dictionary - 将一次迭代列表值的集合转换为浮点值

时间:2014-09-24 23:48:32

标签: 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]

2 个答案:

答案 0 :(得分:2)

您还可以通过索引使每个集合成为列表并进行访问:

 {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()}

答案 1 :(得分:1)

这样的事情应该有效:

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知道)。