【问题标题】:Select key and one value out of tuples with multiple values per key to create new dictionary从每个键有多个值的元组中选择键和一个值来创建新字典
【发布时间】:2022-01-23 18:32:33
【问题描述】:

我最近开始学习 Python 编程,但遇到了一个问题。 我试图自己解决这个问题,但没有成功。

我有一个字典,其中有一个格式化字符串作为键和每个键有 3 个值的元组。

dict1 = { “a;2;1;1;” : ( 1, 2, 3), “a;3;2;1;” : ( 4, 5, 6)}

我想用 dict1 中的所有键和每个键的第三个值创建一个新的字典 dict2。

dict2 = {“a;2;1;1;” : 3, “a;3;2;1;” : 6}

在这些例子中我只使用了两个键值对,真正的字典有一万个键值对。

有什么建议吗? 感谢您的帮助。

【问题讨论】:

    标签: python dictionary tuples


    【解决方案1】:

    通过简单的迭代来完成:

    dict2 = dict()
    for k in dict1:
        dict2[k] = dict1[k][2]
    

    或者使用 dict-comprehension 在一行中完成:

    dict2 = {k: dict1[k][2] for k in dict1}
    

    【讨论】:

      【解决方案2】:

      2 线解决方案,可能会以更“python”的方式完成,但这会起作用:

      dict1 = {'a;2;1;1;' : ( 1, 2, 3), 'a;3;2;1;' : ( 4, 5, 6)}
      dict2 = {}
      
      # You just need these two lines here
      for k in dict1:
          dict2[k] = dict1[k][2]
      
      print(dict2)
      

      【讨论】:

        【解决方案3】:
        dict1 = { 'a;2;1;1;' : ( 1, 2, 3), 'a;3;2;1;' : ( 4, 5, 6)}
        dict2 = {}
        
        for k in dict1.keys():
            dict2[k] = dict1[k][2]
        

        【讨论】:

        • 请记住,Stack Overflow 不仅仅是为了解决眼前的问题,而是为了帮助未来的读者找到类似问题的解决方案,这需要了解底层代码。这对于我们社区的初学者和不熟悉语法的成员来说尤其重要。鉴于此,您能否edit 您的答案包括对您正在做什么的解释以及为什么您认为这是最好的方法?
        【解决方案4】:

        这也可以通过字典理解来完成:

        dict1 = { “a;2;1;1;” : ( 1, 2, 3), “a;3;2;1;” : ( 4, 5, 6)}
        dict2 = {x: y for (x,(_,_,y)) in dict1.items()}
        

        【讨论】:

          猜你喜欢
          • 2012-09-19
          • 1970-01-01
          • 1970-01-01
          • 2021-12-17
          • 2012-10-30
          • 1970-01-01
          • 1970-01-01
          • 2016-11-05
          • 2019-10-05
          相关资源
          最近更新 更多