【发布时间】:2020-03-16 19:43:49
【问题描述】:
我有一个字符串列表,列表中的每个元素都有几个用冒号分隔的字符串。我正在尝试将每个元素转换为字典。例如,我列表中的一个元素如下所示:
attributesList[0]
Out: 'Health Score: A, Happy Hour Specials: Yes, Vegan Options: Yes, Takes Reservations: Yes, Delivery: No, Take-out: Yes, Accepts Credit Cards: Yes, Good For: Brunch, Lunch, Dinner, Parking: Street, Bike Parking: Yes, Wheelchair Accessible: Yes, Good for Kids: No, Good for Groups: Yes, Ambience: Casual, Trendy, Classy, Noise Level: Average, Alcohol: Beer & Wine Only, Good For Happy Hour: Yes, Outdoor Seating: Yes, Wi-Fi: Free, Has TV: No, Waiter Service: Yes, Caters: No, Gender Neutral Restrooms: Yes'
基于link 1和link 2中的解决方案,我尝试了以下方法:
attributesDict = dict(s.split(':') for s in attributesList)
attributesDict = dict(map(str.strip, s.split(':')) for s in attributesList)
attributesDict = dict(map(lambda s : s.split(':') for s in attributesList))
但在每种方法中,我都会收到如下所示的错误消息:
ValueError: dictionary update sequence element #0 has length 24; 2 is required
ValueError: dictionary update sequence element #0 has length 24; 2 is required
TypeError: map() must have at least two arguments.
我查看了here 的解决方案,但我不清楚如何在我的上下文中解决该问题。我也有点担心冒号后面的字符串中存在多个项目,如下例所示:
Good For: Brunch, Lunch, Dinner,
我可以将冒号后面的三个项目捕获为字典中的值吗?我怎样才能实现我的目标?
编辑:在下方添加所需的输出
attributesDict[0]
Out: {'Health Score': 'A', 'Happy Hour Specials': 'Yes', 'Vegan Options': 'Yes', 'Takes Reservations': 'Yes', 'Delivery': 'No', 'Take-out': 'Yes', 'Accepts Credit Cards': 'Yes', 'Good For': 'Brunch, Lunch, Dinner', 'Parking': 'Street', 'Bike Parking': 'Yes', 'Wheelchair Accessible': 'Yes', 'Good for Kids': 'No', 'Good for Groups': 'Yes', 'Ambience': 'Casual, Trendy, Classy', 'Noise Level': 'Average', 'Alcohol': 'Beer & Wine Only', 'Good For Happy Hour': 'Yes', 'Outdoor Seating': 'Yes', 'Wi-Fi': 'Free', 'Has TV': 'No', 'Waiter Service': 'Yes', 'Caters': 'No', 'Gender Neutral Restrooms': 'Yes'}
【问题讨论】:
-
使用是
map(function, iterable)所以map(lambda s : s.split(':') , attributesList) -
@Rnovice 你能提供一个期望输出的例子吗?
-
@azro,使用您的建议会删除我帖子中的 TypeError,但会导致帖子中的 ValueError。
-
你的列表 attributesList 到底是什么?可以分享吗?与预期的输出
-
按照建议在我的问题中包含了预期的输出。我发布的所有字符串都是我的列表的第一个元素。该列表有 1000 多个这样的元素。
标签: python string list dictionary