【问题标题】:Extract keys from a dictionary as a flat list从字典中提取键作为平面列表
【发布时间】:2018-01-18 12:27:15
【问题描述】:

我有一个字典对象,如下所示:

{('look', 'toward'): 1,
 ('new', 'cage'): 3,
 ('think', 'surpris'): 0,
 ('go', 'see'): 1 }

我想做的是按顺序分别提取每个单词 'look', 'toward', 'new', 'cage'....直到没有使用 values()。 我怎样才能提取这些词? 制作列表而不是字典更好吗? 如果能详细说明,将不胜感激。

【问题讨论】:

  • 您不必使用values(),因为您所追求的是字典的keys,而不是values。关于顺序,不能保证,因为 dict 不理解这个概念(或者没有达到 3.6 版,但这只是一个不能指望的实现细节)。
  • 好的。感谢您指出我的误解。

标签: python python-3.x list dictionary


【解决方案1】:

您只对感兴趣,而不是“值”。键是用来索引字典的。

一种干净的方法是调用dict.keys() 并将其展平,使用itertools.chainimport itertools,首先。

>>> list(itertools.chain.from_iterable(d.keys()))
['think', 'surpris', 'go', 'see', 'look', 'toward', 'new', 'cage']

请注意,返回字符串的顺序无法保证,因为 python 的字典在 3.6 之前的版本上没有排序。

【讨论】:

    【解决方案2】:

    这是你要找的吗:

    d = {('look', 'toward'): 1,
     ('new', 'cage'): 3,
     ('think', 'surpris'): 0,
     ('go', 'see'): 1 }
    
    [kk for k in d for kk in k]
    # returns:
    ['look', 'toward', 'think', 'surpris', 'new', 'cage', 'go', 'see']
    

    【讨论】:

      【解决方案3】:

      一种简单的方法来提取 a 是否是您的 dict:

      >>> for key, value in a.items():
      ...     print(key[0],key[1],value)
      ...
      look toward 1
      new cage 3
      think surpris 0
      go see 1
      

      你可以玩你想玩的:

      >>> for key, value in a.items():
      ...     print(f'{key[0]}: {value}')
      ...     print(f'{key[1]}: {value}')
      ...
      look: 1
      toward: 1
      new: 3
      cage: 3
      think: 0
      surpris: 0
      go: 1
      see: 1
      

      【讨论】:

        【解决方案4】:
        data={('look', 'toward'): 1,
         ('new', 'cage'): 3,
         ('think', 'surpris'): 0,
         ('go', 'see'): 1 }
        
        
        
        print([k for i in data.keys() for k in i ])
        

        输出:

        [['new', 'cage'], ['go', 'see'], ['look', 'toward'], ['think', 'surpris']]
        

        【讨论】:

          【解决方案5】:

          您要做的是获取您可以使用my_dict.keys() 获取的字典键列表,然后像这样合并其中的元组:

          my_dict = {('look', 'toward'): 1,
            ('new', 'cage'): 3,
            ('think', 'surpris'): 0,
            ('go', 'see'): 1 }
          
          my_tuple = tuple()
          for key in my_dict.keys():
            new_list = new_list + key
          print(my_tuple)
          

          这将打印:

          ('look', 'toward', 'new', 'cage', 'think', 'surpris', 'go', 'see')
          

          您现在可以正常迭代:

          for item in my_tuple:
            print(item)
          

          会吐出来的:

          look
          toward
          new
          cage
          think
          surpris
          go
          see
          

          【讨论】:

            猜你喜欢
            • 2021-03-08
            • 1970-01-01
            • 2021-09-26
            • 2011-07-11
            • 1970-01-01
            • 2021-09-17
            • 1970-01-01
            • 2018-01-31
            • 1970-01-01
            相关资源
            最近更新 更多