【问题标题】:Python 3: Convert Tuple to DictionaryPython 3:将元组转换为字典
【发布时间】:2020-10-03 07:18:26
【问题描述】:

正在尝试转换:

word_vomit = [(('best', 'cat', 'breed'), 3), (('dogs', 'wearing', 'hats'), 3), (('did', 'you', 'eat'), 2), (('cats', 'are', 'evil'), 1), (('i', 'hate', 'lists'), 1)]

进入这个:

goal = {'best cat breed': '3','dogs wearing hats': '3','did you eat': '2','cats are evil': '1','i hate lists': '1'}

提前感谢所有 cmets

【问题讨论】:

    标签: python python-3.x dictionary tuples


    【解决方案1】:

    这是一个你可以使用的方法,

    word_vomit = [(('best', 'cat', 'breed'), 3), (('dogs', 'wearing', 'hats'), 3), (('did', 'you', 'eat'), 2), (('cats', 'are', 'evil'), 1), (('i', 'hate', 'lists'), 1)]
    dict1={}
    for i in word_vomit:
        str1=""
        str1=" ".join(i[0])
        dict1[str1]=str(i[1])
    print(dict1)
    

    输出:

    {'best cat breed': '3', 'dogs wearing hats': '3', 'did you eat': '2', 'cats are evil': '1', ' i hate lists': '1'}
    

    希望对你有帮助!

    【讨论】:

    • 由于前导空格,此处的输出与所需的不匹配。我建议warl0ck的答案。 str.join 是这种转换的最佳选择。
    【解决方案2】:

    这是一个使用 dictionary comprehension 的简洁选项:

    word_vomit = [(('best', 'cat', 'breed'), 3), (('dogs', 'wearing', 'hats'), 3), (('did', 'you', 'eat'), 2), (('cats', 'are', 'evil'), 1), (('i', 'hate', 'lists'), 1)]
    output = {' '.join(k): v for k, v in word_vomit}
    print(output)
    

    输出:

    {'best cat breed': 3, 'dogs wearing hats': 3, 'did you eat': 2, 'cats are evil': 1, 'i hate lists': 1}
    

    【讨论】:

    • 这似乎是最干净的方法,有什么理由比使用 Warl0ck 的 join() 更可取吗?
    • 字典推导在其他编程语言中是一个不常见的特性,所以它可能会使对 Python 只是随便理解的人感到困惑。 TBH,这可能是我写的第一个。但是,是的,它节省了空间,如果你理解字典理解,那就很清楚了。
    【解决方案3】:

    也许你可以在字符串上使用.join 方法将元组转换为字符串。

    word_vomit = [(('best', 'cat', 'breed'), 3), (('dogs', 'wearing', 'hats'), 3), (('did', 'you', 'eat'), 2), (('cats', 'are', 'evil'), 1), (('i', 'hate', 'lists'), 1)]
    
    out_dict = {}
    
    for worditem in word_vomit:
      out_dict[" ".join(worditem[0])] = worditem[1]
    
    print(out_dict)
    

    【讨论】:

    • 这也很有帮助,谢谢。我注意到即使一次使用两个单词也能很好地工作。
    【解决方案4】:
    word_vomit = [(('best', 'cat', 'breed'), 3), (('dogs', 'wearing', 'hats'), 3), (('did', 'you', 'eat'), 2), (('cats', 'are', 'evil'), 1), (('i', 'hate', 'lists'), 1)]
    
    goal = {}
    for key_tuple, value in word_vomit:
    
        key = " ".join(key_tuple)
    
        goal[key] = str(value)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-20
      • 2020-10-25
      • 2022-07-24
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 2012-03-15
      相关资源
      最近更新 更多