2014-09-24 35 views
1

我只是初學者的python問題。我有一個字典,其值由一個迭代列表組成。我如何從列表中刪除這些項目以獲得浮點數?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

您也可以使每個組由索引列表,並訪問:

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

+1對於很少使用的'set.pop' – mgilson 2014-09-24 23:57:47

+0

@mgilson,我想這應該是最有效率的,但只有在OP不想在其他地方使用舊字典的情況下才能正常工作,您的'iter'解決方案是最好的整體。 – 2014-09-25 00:07:51

1

像這樣的東西應該工作:

resultdict = {k: next(iter(s)) for k, s in input_dict.items()} 

whi CH工作,因爲next(iter(s))發生在該組中的「第一」元素:

>>> s = set([1]) 
>>> next(iter(s)) 
1 

請注意,你不希望與具有多個項目組要做到這一點 - 你永遠不知道你會得到哪個元素。


還有其他的方法太:

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

將工作太,但我猜他們會效率較低(但你必須timeit就知道了)。