如何将字符串添加到字典中的列表中?

时间:2021-03-24 23:08:07

标签: python dictionary key

我必须制作一本字典来转换这个列表:

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])

2 个答案:

答案 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