我必须制作一本字典来转换这个列表:
import time
from datetime import datetime
def runTest():
while True:
current_time = datetime.now().strftime("%H:%M:%S")
print(current_time)
time.sleep(10)
进入:
locations = [
['Lorraine Izaguirre', 'MA'],
['Chris Clements', 'PA'],
['Kari Bacon', 'PA'],
['Chris Clements', 'NY'],
['Chris Clements', 'NJ'],
['Jamee Cheek', 'PA'],
['Kari Bacon', 'NY']
]
这是我已经编写的代码,但由于某种原因,我不断收到错误消息,提示我无法将字符串附加到列表中。我很困惑,因为我以为我在 append 语句中明确指出 {'Lorraine Izaguirre': ['MA'], 'Chris Clements': ['PA', 'NY', 'NJ'], 'Kari Bacon': ['PA', 'NY'], 'Jamee Cheek': ['PA']}
是一个 1x1 列表。任何帮助将不胜感激。
state
编辑:解决了,有几个问题
1.) 在下面指出我需要将 def organize(locations):
name_dict = {}
for i in range(len(locations)-1):
name = locations[i][0]
state = locations[i][1]
if name not in name_dict:
name_dict.update({name:state})
else:
name_dict[name] = name_dict[name].append([state])
return name_dict
更改为 name_dict.update({name:state})
2.) 我需要将 name_dict.update({name:[state]})
更改为 range(len(locations)-1)
和 3.) 将 range(len(locations))
更改为 name_dict[name].append([state])
答案 0 :(得分:2)
您可以使用 dict.setdefault
来完成任务:
locations = [
["Lorraine Izaguirre", "MA"],
["Chris Clements", "PA"],
["Kari Bacon", "PA"],
["Chris Clements", "NY"],
["Chris Clements", "NJ"],
["Jamee Cheek", "PA"],
["Kari Bacon", "NY"],
]
out = {}
for l, abbr in locations:
out.setdefault(l, []).append(abbr)
print(out)
打印:
{'Lorraine Izaguirre': ['MA'], 'Chris Clements': ['PA', 'NY', 'NJ'], 'Kari Bacon': ['PA', 'NY'], 'Jamee Cheek': ['PA']}
答案 1 :(得分:0)
collections.defaultdict
就是为此而设计的
from collections import defaultdict
def organize(locations):
name_dict = defaultdict(list)
for name, state in locations:
name_dict[name].append(state)
return name_dict