python - 如何以最简单的方式获取以下字典?

标签 python python-3.x list dictionary

我在这里得到一个列表:

my_list=["Alex:1990:London", 
         "Tony:1993:NYC", 
         "Kate:2001:Beijing", 
         "Tony:2001:LA", 
         "Alex:1978:Shanghai"]

如何以最简单的方式从 my_list 中获取目标字典 my_target_dict

my_target_dict={
                "Alex":["Alex:1990:London", "Alex:1978:Shanghai"], 
                "Tony":["Tony:1993:NYC", "Tony:2001:LA"], 
                "Kate":["Kate:2001:Beijing"]
               }

最佳答案

使用 defaultdict :

>>> from collections import defaultdict
>>> my_list=["Alex:1990:London", "Tony:1993:NYC", "Kate:2001:Beijing", "Tony:2001:LA", "Alex:1978:Shanghai"]
>>> d =  defaultdict(list)
>>> for item in my_list:
...     name, *_ = item.partition(":")
...     d[name].append(item)
... 
>>> d
defaultdict(<class 'list'>, {'Alex': ['Alex:1990:London', 'Alex:1978:Shanghai'], 'Tony': ['Tony:1993:NYC', 'Tony:2001:LA'], 'Kate': ['Kate:2001:Beijing']})
>>> d["Alex"]
['Alex:1990:London', 'Alex:1978:Shanghai']

您可以使用此理解来清理列表包装的单个项目:

>>> {k:v if len(v) > 1 else v[0] for k,v in d.items()}
{'Alex': ['Alex:1990:London', 'Alex:1978:Shanghai'], 'Tony': ['Tony:1993:NYC', 'Tony:2001:LA'], 'Kate': 'Kate:2001:Beijing'}

关于python - 如何以最简单的方式获取以下字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034055/

相关文章:

python - 如何在pygame中存储对象先前的x位置(坐标)?

python - PyQt5 不将设置保存到 ini 文件

python - 在 Python 中生成填充有唯一整数值​​的列表

c# - 列表的交集

java - 在 Java 中写入 CSV 文件的子字符串问题

python - 方法的 "self"参数是否受到某种保护?

python - PyDev 仅在控制台中使用 Pylint : No output in Problems View,

Python:在重新分配外部函数后,闭包如何继续存在?

python - 为什么我的代码不打印产品链接?

python-3.x - 为什么 Azure ML Studio(经典)需要额外的时间来执行 Python 脚本?