2016-11-04 49 views
0

所以我的代碼的一部分在做,像這樣如何將一個字符串變成一個沒有鍵的列表?

  bag = {'eggs', 'milk', 'youghurt'} 
      print(bag.values()) 
      for x in kaupat: 
       if set(kauppat[x]).issuperset(set(bag)) is True: 
        for key in shops[x]: 
         keylist = {key} 
         if set(bag).issuperset(keylist) is True: 
          price+= float(kauppat[x][key]) 
          prices[x] = price 

,它的工作,而我在寫的時候我已經設置包我的代碼

bag = {'eggs', 'milk', 'yogurt'} 

,但現在,包應該是從輸入,我似乎無法創建我目前的程序可以使用的那種字典。輸入將是這樣的:

input = "eggs milk yogurt" 

,我已經試過了分裂成一個列表,並使用它作爲是或者由字典出來的,但它總是錯誤的,因爲形式是不完全的,因爲我在測試過程中。

那麼,有沒有辦法爲我改變字符串

eggs milk yogurt 

{'eggs', 'milk', 'yogurt'} 

還是我不得不走回頭路了很多?

回答

0

你犯了個set,不是字典(dict):

>>> type({'eggs', 'milk', 'yogurt'}) 
<class 'set'> 

如果你想從list(或任何看起來像一個)做出set,你可以只通過它,像這樣:

>>> set(['eggs', 'milk', 'yogurt']) 
{'eggs', 'milk', 'yogurt'} 

一個list也是什麼split回報,所以你可以這樣做:

>>> set('eggs milk yogurt'.split()) 
{'eggs', 'milk', 'yogurt'} 

你只需要做一次。通過設置set()什麼都不做,所以在其餘的代碼中,你可以只寫bag而不是set(bag)

+0

set(x.split())會訣竅,謝謝 – Grak

0

看來你是在字典之後。如何:

a = "eggs milk yogurt" 
b = a.split(" ") 
c = dict(zip(range(len(b)),b)) 
print(c) 
{0: 'eggs', 1: 'milk', 2: 'yogurt'} 
相關問題