我有一个字典列表:

    some_list = [
                  {
                     item1:'a',
                     item2:['1', '2']
                  },
                  {
                     item1:'b',
                     item2:['1', '2']
                  },
                  {
                     item1:'a',
                     item2:['1']
                  }
                ]

我想得到:

['a 1', 'a 2', 'b 1', 'b 2'] 其中项目 1 中的每个值与每个字典的项目 2 中的值配对,然后只剩下唯一的字符串。

我可以想到一个明显的方法来做到这一点,即:
  • 遍历 some_list;
  • 每个字典的
  • ,得到一个 each['item_1'] 和 each['item_2']
  • for each['item_2'] 的成员执行 each['item_1'] + ' ' + member
  • 现在,把列表变成一个集合,我就有了我的唯一值

  • 我想知道这些是否是使用列表理解的更优雅的方法。

    最佳答案

    如果顺序无关紧要,那么您可以轻松地将您的逻辑转换为集合理解(如果您愿意,还可以转换为 list):

    In [1]: some_list = [
       ...:                   {
       ...:                      'item1':'a',
       ...:                      'item2':['1', '2']
       ...:                   },
       ...:                   {
       ...:                      'item1':'b',
       ...:                      'item2':['1', '2']
       ...:                   },
       ...:                   {
       ...:                      'item1':'a',
       ...:                      'item2':['1']
       ...:                   }
       ...:                 ]
    
    In [2]: {f"{d['item1']} {v}" for d in some_list for v in d['item2']}
    Out[2]: {'a 1', 'a 2', 'b 1', 'b 2'}
    

    关于python - 从字典列表中的字典值中查找唯一字符串对的优雅方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48408751/

    10-14 18:28
    查看更多