【问题标题】:Python function that organizes values in a lis, dictionary在 lis、字典中组织值的 Python 函数
【发布时间】:2019-01-25 04:38:49
【问题描述】:

标尺衡量物体的硬度 函数应返回一个字典,将此类列表中的对象组织成四个类别。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 这看起来像是一道作业题。请展示你的尝试; SO 不是代码编写或家庭作业服务。
  • @ScottAllen:您应该展示您为获得解决方案所做的尝试。无论如何,我有一个解决方案可以帮助您学习 Python 知识,请查看答案。可悲的是,有人在没有给出正当理由的情况下否决了它。

标签: python list dictionary


【解决方案1】:
  • 使用键和空列表创建 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']}

【讨论】:

    【解决方案2】:

    另一种解决方法是使用dict comprehensionsetdefault 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 的用法。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多