我只是初学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]
答案 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
知道)。