Функция Python, которая организует значения в словаре, словаре - PullRequest
0 голосов
/ 25 января 2019

Шкала оценки твердости объекта Функция должна возвращать словарь, упорядочивающий объекты из такого списка по четырем категориям.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Еще один способ ее решения - использование dict comprehension и setdefault метода dict:

rocks = [('talc', 1), ('lead', 1.5), ('copper', 3), \
         ('nickel', 4), ('silicon', 6.5), ('emerald', 7.5),\
         ('boron', 9.5), ('diamond', 10)]

aa = {}
bb = {aa.setdefault("soft",[]).append(k) if 1 <= v <= 3 \
      else aa.setdefault("medium",[]).append(k) if 3.1 <= v <= 5 \
      else aa.setdefault("hard",[]).append(k) if 5.1 <= v <= 8 \
      else aa.setdefault("very hard",[]).append(k) \
      for k, v in rocks}
print (aa)

# Result--> {'soft': ['talc', 'lead', 'copper'], 'medium': ['nickel'], 'hard': ['silicon', 'emerald'], 'very hard': ['boron', 'diamond']}

Я надеюсь, что это даже поможет вам понять использование setdefault. :)

0 голосов
/ 25 января 2019
  • Создание dict с ключами и пустыми списками.
  • При каждой итерации добавляйте значение к соответствующему ключу.

/

def func(ls):
    dict_ = {'soft':[], 'medium':[],'hard':[], 'very hard':[]}
    for i in ls:
        # print(i)
        if i[1] >= 1 and i[1] <=3:
            dict_['soft'].append(i[0])
        elif i[1] >= 3.1 and i[1] <= 5:
            dict_['medium'].append(i[0])
        elif i[1] >= 5.1 and i[1] <=8:
            dict_['hard'].append(i[0])
        elif i[1] >= 8.1 and i[1] <=10:
            dict_['very hard'].append(i[0])

    return dict_

print(func(rocks))

выход

{'hard': ['silicon', 'emerald'],
 'medium': ['nickel'],
 'soft': ['talc', 'lead', 'copper'],
 'very hard': ['boron', 'diamond']}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...