【问题标题】:Divide list elements with dictionary values in python在python中用字典值划分列表元素
【发布时间】:2019-11-24 21:46:40
【问题描述】:

我有一本字典:

d=[{'court': 4, 'hope': 6},
 {'court': 9, 'hope': 27},
 {'hope': 5, 'mention': 2, 'life': 10, 'bolster': 1, 'internal': 15, 'level': 1}]

并列出

l=[2, 9, 5]

我只想用相应的字典值来划分列表元素。某事,

new_list=[{'court': 2, 'hope': 3},
 {'court': 1, 'hope': 3},
 {'hope': 1, 'mention': 0.4, 'life': 2, 'bolster': 0.2, 'internal': 3,'level': 0.2}]

我所做的一切,

new_list=[]
for i in d:
    for k,j in i.items():
        new={k:j/o for o in l}
        new_list.append(new)

它作为包含单个元素的列表返回:

[{'court': 2},{'hope': 3},
 {'court': 1},{'hope': 3},
 {'hope': 1},{'mention': 0.4},{'life': 2},{'bolster': 0.2},{'internal': 3},{'level': 0.2}]

【问题讨论】:

    标签: python arrays python-3.x dictionary


    【解决方案1】:

    使用简单的列表/字典理解:

    res = [{k: v/divider for k,v in d[i].items()} for i, divider in enumerate(l)]
    print(res)
    

    输出:

    [{'court': 2.0, 'hope': 3.0}, {'court': 1.0, 'hope': 3.0}, {'hope': 1.0, 'mention': 0.4, 'life': 2.0, 'bolster': 0.2, 'internal': 3.0, 'level': 0.2}]
    

    或者同zip函数:

    res = [{k: v/divider for k,v in d.items()} for d, divider in zip(d, l)]
    

    【讨论】:

      【解决方案2】:

      1. Hard Way(最容易理解的方式)

      for i in range(len(l)):
           for key, value in d[i].items():
                val = value / l[i]
                if val.is_integer():
                     d[i][key] = int(val)
                else:
                     d[i][key] = val
      
      print(d)
      

      2。使用zip()pythonBuilt-in Functions

      d = [{key: (int(value/divider) if (value/divider).is_integer() else value/divider) for key,value in d.items()} for d, divider in zip(d, l)]
      print(d)
      

      3。使用enumerate()pythonBuilt-in Functions

      d = [{key: (int(value/divider) if (value/divider).is_integer() else value/divider) for key,value in d[i].items()} for i, divider in enumerate(l)]
      print(d)
      

      这 3 种方法可以为您提供与您预期相同的输出:

      [{'court': 2, 'hope': 3},
       {'court': 1, 'hope': 3},
       {'hope': 1, 'mention': 0.4, 'life': 2, 'bolster': 0.2, 'internal': 3, 'level': 0.2}]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-25
        • 2013-07-04
        • 2016-03-16
        • 2019-02-13
        • 2022-11-27
        • 1970-01-01
        • 2020-08-13
        • 1970-01-01
        相关资源
        最近更新 更多