将列表中的字母数字字分开并存储为di的键值对

2024-09-30 10:42:50 发布

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

我有一个字母数字数据列表

my_list = ["A1B2244", "B3H7654", "A1O6541", "J4777"]

我需要把每个单词用dict的形式分开

{"A1": ["B2244", "O6541"], "B3": ["H7654"], "J4": ["777"]}

你能告诉我用python最简单的方法吗。你知道吗


Tags: 数据列表mya1字母数字单词dict
3条回答

可以使用^{}根据条件(前两个字符)对列表中的元素进行分组。然后将结果提供给dict构造函数

>>> from itertools import groupby
>>> dict([(k,list(g)) for k,g in groupby(sorted(k),key=lambda x: x[:2])])
>>> {'J4': ['J4777'], 'A1': ['A1B2244', 'A1O6541'], 'B3': ['B3H7654']}
my_list = ['A1B2244', 'B3H7654', 'A1O6541', 'J4777']
my_dict={i[:2]:i[2:] for i in my_list}

编辑: 抱歉,我没有注意到输出中的复制。其他人有简短的解决方案,但一个纯粹的python方法是:

my_list = ['A1B2244', 'B3H7654', 'A1O6541', 'J4777']
my_dict={}
for i in my_list:
    if i[:2] in my_dict:
        my_dict[i[:2]].append(i[2:])
    else:
        my_dict[i[:2]]=[i[2:]]
list = ['A1B2244', 'B3H7654', 'A1O6541', 'J4777']
#first initialize lists based 2 first elements
d= {i[:2]:[] for i in list}
#loop to add items by key
[d.get(i[:2]).append(i[2:]) for i in list]
print(d)

输出:

{'A1': ['B2244', 'O6541'], 'J4': ['777'], 'B3': ['H7654']}

相关问题 更多 >

    热门问题