根据每个值的长度更改字典的每个键

  • 本文关键字:字典 python dictionary
  • 更新时间 :
  • 英文 :


我有一本这样的字典:

{ 1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD'] }

是否有一种方法可以设置字典中每个值的长度作为它的键?

我的意思是,我想要这本字典:

{ 5:['A', 'B', 'C', 'D', 'E'] , 4:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 2:['BC','EAD'] , 1:['BCEAD'] }

请帮我解决这个问题。

使用一个非常python化的字典推导式:

dict_ = { 1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD'] }
dict2 = {len(v) : v for k, v in dict_.items()}
>>> {5: ['A', 'B', 'C', 'D', 'E'], 4: ['B', 'C', 'E', 'AD'], 3: ['E', 'AD', 'BC'], 2: ['BC', 'EAD'], 1: ['BCEAD']}

试试这个:


dict_old = {1: ['A', 'B', 'C', 'D', 'E'], 2: ['B', 'C', 'E', 'AD'], 3: ['E', 'AD', 'BC'], 4: ['BC', 'EAD'], 5: ['BCEAD']}
dict_new = {}
for k, v in dict_old.items():
dict_new[len(v)] = v
print(dict_new)

你可以通过dict comprehension:

>>> dict_ = { 1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD'] }
>>> dict2 = {len(v) : v for _, v in dict_.items()}
{5: ['A', 'B', 'C', 'D', 'E'], 4: ['B', 'C', 'E', 'AD'], 3: ['E', 'AD', 'BC'], 2: ['BC', 'EAD'], 1: ['BCEAD']}

或者你可以用map函数来做:

>>> dict_ = {
1:['A', 'B', 'C', 'D', 'E'] , 
2:['B', 'C', 'E', 'AD'] , 
3:['E', 'AD', 'BC'] , 
4:['BC', 'EAD'] , 
5:['BCEAD'] }
>>> new_dict = dict(map(lambda x:(len(x[1]),x[1]),dict_))
>>> new_dict
{5: ['A', 'B', 'C', 'D', 'E'],
4: ['B', 'C', 'E', 'AD'],
3: ['E', 'AD', 'BC'],
2: ['BC', 'EAD'],
1: ['BCEAD']}

可以用values()list()函数遍历原始字典的所有值:

d = { 1:['A', 'B', 'C', 'D', 'E'] , 2:['B', 'C', 'E', 'AD'] , 3:['E', 'AD', 'BC'] , 4:['BC', 'EAD'] , 5:['BCEAD'] }
newD = {}
for i in list(d.values()):
newD[len(i)] = i
print(newD)

输出:请注意,如果您有几个相同长度的值,则字典将只有一个键。字典中不能有超过1个相同的键

{5: ['A', 'B', 'C', 'D', 'E'], 4: ['B', 'C', 'E', 'AD'], 3: ['E', 'AD', 'BC'], 2: ['BC', 'EAD'], 1: ['BCEAD']}

相关内容

  • 没有找到相关文章

最新更新