怎样用最简单的方法得到下列词典?

2024-04-20 07:11:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里得到一个列表:

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

如何以最简单的方式从我的列表中获取目标词典?你知道吗

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

Tags: target目标列表my方式lalist词典
3条回答

如果您打算仅使用列表和词典,请尝试以下操作:

my_target_dict=dict()
for value in my_list:
    key=value.split(':')[0]
    if key in my_target_dict:
        my_target_dict[key].append(value)
    else:
        my_target_dict[key]=[value]
 print(my_target_dict)

使用^{}

>>> 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'}

这是我给你的解决方案:

my_list=["Alex:1990:London", "Tony:1993:NYC", "Kate:2001:Beijing", "Tony:2001:LA", "Alex:1978:Shanghai"]
dict = {}
for idx, content in enumerate(my_list):
    name = content[:(content.index(':'))]
    if name not in dict:
        dict[name] = []
    dict[name].append(my_list[idx])
  1. 首先,如果您不知道enumerate,它会计算您的索引并 获取列表中每个元素的内容。你知道吗
  2. 第二,用字符串的基本python取这些人的名字。我使用name = content[:(content.index(':'))]将字符串从开始到第一个符号“:”。你知道吗
  3. 第三,检查dict的键是否存在。否则,它将删除该键列表中的所有元素。你知道吗
  4. 最后但并非最不重要的一点是,将所需元素附加到关键字dict中

最终结果:

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

相关问题 更多 >