2016-11-04 10 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'> 

Если вы хотите сделать set из list (или что-нибудь, что выглядит как один), вам может просто передать его, как это:

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

list также то, что split возвращается, так что вы можете сделать:

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

Вам просто нужно сделать это один раз. Передача набора в set() ничего не делает, поэтому в остальной части вашего кода вы можете просто написать bag вместо set(bag).

+0

комплект (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'}