python - 遍历列表中的字符串

标签 python dictionary

<分区>

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

给定:

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

输出(给定一个空字典):

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

这是我的尝试:

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

list = str(list)[1:-1].split(",")
listofitems = {}

ctr = 0
while ctr < len(list):
    listofitems[list[0]] = str(list[ctr])
    print listofitems
    ctr = ctr + 1

我的输出是这样的:

{"'10.99": "'10.99"}
{"'10.99": "cheese pizza'"}
{"'10.99": " '4.99"}
{"'10.99": "vanilla milkshake'"}
{"'10.99": " '4.99"}
{"'10.99": "chocolate milkshake'"}

我做错了什么?

最佳答案

好吧,你这里有很多东西很困惑,但你已经很接近了。

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

我会逐行分解我的答案,这样您就可以得到:

  1. str 将列表转换为字符串,然后您尝试拆分它。而是保持列表不变,并使用 list comprehension在它上面拆分列表中的每个字符串。此外,通过使用 item.split(',',1) 唯一强制我们只拆分一次,如果项目中有逗号 - 例如 Ham, cheese &番茄披萨

    list = str(list)[1:-1].split(",") 
    items = [item.split(',',1) for item in items]
    
  2. 使用 for 循环,而不是 while 因为您知道您将循环遍历的列表。另外,由于每个项目都是一对项目,我们甚至可以在 for 循环中解包它们:

    for price,item in items:
    
  3. 使用 Dict.get安全地获取带有该键的项目,如果不存在则使用默认值:

    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 - 遍历列表中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34055854/

相关文章:

python - 在 Python 中将嵌套值插入字典中

python - Google Analytics API要求一个名为“analytics”的变量吗?

python - 如何从 matplotlib 3.3.1 获取没有填充的标记

python - 带有附加参数的自定义聚合原语?

python - 如何在Python中检查key是否存在于values中以及values是否存在于key中

java - 如何在Java中使用EnumMap进行快速查找?

Python的字典列表值的hasattr总是返回false?

python - 将列表与字典进行比较并根据结果打印消息

python 请求<响应[520]>

c++ - 在 C++ 中删除映射迭代器的行为不一致