代码之家  ›  专栏  ›  技术社区  ›  Venkatachalam

在python中对dict值应用函数

  •  0
  • Venkatachalam  · 技术社区  · 6 年前

    我有类似这样的字典,其中值本身就是一个列表。

    import random
    dict_size = 10
    my_dict = dict(zip(np.random.randint(1000000,size=dict_size ), 
                   map(lambda x: [random.randrange(10000)],range(dict_size ))))
    
    my_dict
    #
     {187898: [1209],
      189434: [8294],
      201447: [1258],
      317844: [7760],
      330804: [2305],
      679881: [1738],
      754108: [8503],
      758119: [712],
      845631: [2372],
      870357: [340]}
    

    我想按一定顺序得到字典的值 my_key_order (我创建了一个订单的示例,但我有实际的订单)并将其扁平化。

    my_key_order = [*my_dict]
    

    预期输出:

    [7760, 340, 2305, 1258, 1738, 8294, 712, 8503, 1209, 2372]
    

    当前方法:

    [*map(lambda x:my_dict[x][0], my_key_order)] 
    

    有没有其他更优雅的方法来更快地做(可能不使用lambda)?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sven Harris    6 年前

    我认为列表理解看起来更清晰、更简单:

    [my_dict[x][0] for x in my_key_order]
    

    这只是循环遍历您的顺序,并从字典中获取该项,使用索引将其解包。