如果您是初学者(如我所见)并且不想使用 Python 的 collections 模块并从头开始执行(理解后台工作的概念很重要,其中 集合 确实)。
一旦你熟悉了这一点,你就可以使用 collections 模块,它很漂亮,因为它有很多类,如 defaultdict、OrderedDict 等,可以提高你的工作速度.
这是我尝试过的(不要忘记阅读注释行)。
我编写了一个名为 get_my_target_dict() 的函数,它接受 my_list 并返回 my_target_dict。这就是模块化实现(您应该更喜欢)。
re 是一个使用正则表达式的模块。在这里,它用于匹配 "Alex: 1990 : London"(即 : 周围的空格)类型的字符串(如果有的话)(错误地)。
import re
def get_my_target_dict(my_list):
my_target_dict = {} # dictionary
for string in my_list:
# "Alex:1990:London" => ["Alex", "1990", "London"]
# "Alex : 1990: London" => ["Alex", "1990", "London"]
items = re.split(r"\s*:\s*", string) # `\s*` is to match spaces around `:`
print(items)
# Alex, Tony etc.
key = items[0]
if key in my_target_dict:
my_target_dict[key].append(string)
else:
my_target_dict[key] = [string]
return my_target_dict
if __name__ == "__main__":
my_list=["Alex:1990:London",
"Tony:1993:NYC",
"Kate:2001:Beijing",
"Tony:2001:LA",
"Alex:1978:Shanghai"]
# Call get_my_target_dict(), pass my_list & get my_target_dict
my_target_dict = get_my_target_dict(my_list)
print(my_target_dict)
# {'Alex': ['Alex:1990:London', 'Alex:1978:Shanghai'], 'Tony': ['Tony:1993:NYC', 'Tony:2001:LA'], 'Kate': ['Kate:2001:Beijing']}
# Pretty printing dictionary
import json
print(json.dumps(my_target_dict, indent=4))
# {
# "Alex": [
# "Alex:1990:London",
# "Alex:1978:Shanghai"
# ],
# "Tony": [
# "Tony:1993:NYC",
# "Tony:2001:LA"
# ],
# "Kate": [
# "Kate:2001:Beijing"
# ]
# }