Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 遍历列表中的字符串_Python_Dictionary - Fatal编程技术网

Python 遍历列表中的字符串

Python 遍历列表中的字符串,python,dictionary,Python,Dictionary,如何遍历列表中的字符串,以便将特定值添加到字典中?例如,对于给定的列表,我想将每个项目的价格设置为字典键,并将它们各自的项目设置为值 鉴于: 给定空字典的输出: 以下是我的尝试: 我做错了什么?好吧,你这里有很多事情弄糊涂了,但你很接近 l = ["10.99,cheese pizza", "4.99,vanilla milkshake", "4.99,chocolate milkshake"] d = {} for e in l: k,v = e.split(",") if

如何遍历列表中的字符串,以便将特定值添加到字典中?例如,对于给定的列表,我想将每个项目的价格设置为字典键,并将它们各自的项目设置为值

鉴于:

给定空字典的输出:

以下是我的尝试:


我做错了什么?

好吧,你这里有很多事情弄糊涂了,但你很接近

l = ["10.99,cheese pizza", "4.99,vanilla milkshake", "4.99,chocolate milkshake"]
d = {}
for e in l:
     k,v = e.split(",")
     if d.has_key(k):
        d[k] += [v]
     else:
        d[k] = [v]
首先,不要在python内置之后调用东西,比如list

我会把我的答案一行一行地分解,这样你就可以得到:

str将列表转换为字符串,然后尝试拆分它。取而代之的是保持列表的原样,并使用它分割列表中的每个字符串。此外,通过使用item.split',',1,唯一的强制方法是我们只拆分一次,如果一个项目中有逗号,则会立即拆分,例如火腿、奶酪和番茄比萨饼

使用for循环,而不是一段时间,因为您知道将循环的列表。另外,由于每个项目都是一对项目,我们甚至可以在for循环中解包它们:

for price,item in items:
用于安全获取具有该键的项,如果该项不存在,则获取默认项:

price_set = item_dict.get(price,[])
这是我的完整版本:

items = ["10.99,cheese pizza", "4.99,vanilla milkshake", "4.99,chocolate milkshake"]

items = [item.split(',',1) for item in items]

item_dict = {}

for price,item in items:
    price_set = item_dict.get(price,[])
    item_dict[price] = price_set + [item]

print item_dict
这将产生:

{'10.99': ['cheese pizza'], '4.99': ['vanilla milkshake', 'chocolate milkshake']}

好吧,你有很多事情都搞砸了,但你已经接近了

首先,不要在python内置之后调用东西,比如list

我会把我的答案一行一行地分解,这样你就可以得到:

str将列表转换为字符串,然后尝试拆分它。取而代之的是保持列表的原样,并使用它分割列表中的每个字符串。此外,通过使用item.split',',1,唯一的强制方法是我们只拆分一次,如果一个项目中有逗号,则会立即拆分,例如火腿、奶酪和番茄比萨饼

使用for循环,而不是一段时间,因为您知道将循环的列表。另外,由于每个项目都是一对项目,我们甚至可以在for循环中解包它们:

for price,item in items:
用于安全获取具有该键的项,如果该项不存在,则获取默认项:

price_set = item_dict.get(price,[])
这是我的完整版本:

items = ["10.99,cheese pizza", "4.99,vanilla milkshake", "4.99,chocolate milkshake"]

items = [item.split(',',1) for item in items]

item_dict = {}

for price,item in items:
    price_set = item_dict.get(price,[])
    item_dict[price] = price_set + [item]

print item_dict
这将产生:

{'10.99': ['cheese pizza'], '4.99': ['vanilla milkshake', 'chocolate milkshake']}

这里有一个更具Python风格的2行程序,它涉及到字典的编写

l = ["10.99,cheese pizza", "4.99,vanilla milkshake", "4.99,chocolate milkshake"]

products = [item.split(',') for item in l]
output = {y[0]:[x[1] for x in products if x[0] == y[0]] for y in products}

它首先将它们拆分并格式化为产品,然后按价格分组到一个字典中。

这里有一个更具python风格的2行程序,涉及到字典的编写

l = ["10.99,cheese pizza", "4.99,vanilla milkshake", "4.99,chocolate milkshake"]

products = [item.split(',') for item in l]
output = {y[0]:[x[1] for x in products if x[0] == y[0]] for y in products}

它首先将它们拆分并格式化为产品,然后按价格分组到字典中。

这不是有效的字典。字典中只能有一个键。这不是有效的字典。字典中只能有一个键。split已生成列表。你不需要另一个层次的理解。还有,不要把它命名为dict。非常有用!非常感谢。谢谢,@TigerhawkT3,修好了。同样,我也对你的答案投了赞成票:很高兴能找到更好的方法来做这件事,我自己还是一个n00bd={key:key的值,在[k,v代表k,v代表x.split,v代表x在list]}@user244255啊,是的!我会试试的:再次谢谢!split已经生成了一个列表。你不需要另一个层次的理解。还有,不要把它命名为dict。非常有用!非常感谢。谢谢,@TigerhawkT3,修好了。同样,我也对你的答案投了赞成票:很高兴能找到更好的方法来做这件事,我自己还是一个n00bd={key:key的值,在[k,v代表k,v代表x.split,v代表x在list]}@user244255啊,是的!我会试试的:再次谢谢!