如何在没有键的情况下将字符串制作成列表?

How can I make a string into a list without keys?

所以我的部分代码是这样做的

            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 设置为

时,它在我编写代码时起作用
bag = {'eggs', 'milk', 'yogurt'}

但现在那个包应该来自输入,我似乎无法创建我当前程序可以使用的那种字典。输入将是这样的:

input = "eggs milk yogurt"

我试过将它拆分成一个列表并按原样使用它或从中制作字典,但它总是出错,因为表格与我在测试期间的表格不完全一样。

那么我有什么办法可以更改字符串

eggs milk yogurt

进入

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

还是我必须后退很多?

看来您在找字典。怎么样:

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

您制作的是 set,而不是字典 (dict):

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

如果你想从 list(或任何看起来像的东西)做成 set,你可以传递它,像这样:

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

一个list也是什么splitreturns,所以你可以这样做:

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

你只需要这样做一次。将集合传递给 set() 什么都不做,因此在其余代码中,您可以只写 bag 而不是 set(bag).