Изменить словарь для сопоставления значений с длиной значения - PullRequest
1 голос
/ 07 января 2020

У меня есть следующий словарь:

dict = {12:'Apples', 13:'Bananas', 14:'Oranges', 15:'Cherries'}

Я хочу переписать этот словарь так, чтобы значения dict стали ключами new_dict. Тогда значения new_dict будут длиной каждого нового значения следующим образом:

new_dict = {'Apples':6, 'Bananas':7, 'Oranges':7, 'Cherries':8}

Я могу поменять значения, используя

new_dict{}
for key,value in dict.items():
  new_dict[key] = [value]
  print(new_dict[key])
  counts = len(new_dict[key])

Но функция len здесь подсчитывает, сколько значений присутствует, а не сколько символов на значение.

Ответы [ 2 ]

5 голосов
/ 07 января 2020

Используя словарь, вы можете сделать следующее:

d = {12:'Apples', 13:'Bananas', 14:'Oranges', 15:'Cherries'}

d_new = {v: len(v) for v in d.values()}

Вывод:

>>> d_new
{'Apples': 6, 'Bananas': 7, 'Oranges': 7, 'Cherries': 8}

Обратите внимание, что вы не должны использовать dict в качестве переменной имя при перезаписи встроенного dict класса.

Это эквивалентно следующему для l oop:

new_dict = {}
for v in d.values():
    new_dict[v] = len(v)
2 голосов
/ 07 января 2020

Вы можете использовать функцию dict, архивируя значения и длины:

d = {12:'Apples', 13:'Bananas', 14:'Oranges', 15:'Cherries'}
d_new = dict(zip(d.values(), map(len, d.values())))

Результаты

{'Apples': 6, 'Bananas': 7, 'Oranges': 7, 'Cherries': 8}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...