【问题标题】:Convert Python dictionary which has list as values into simple dictionnary将具有列表作为值的 Python 字典转换为简单字典
【发布时间】:2020-05-11 13:29:39
【问题描述】:

我有一本字典,其中包含如下值的列表:

dict = {"a":["b","c","d"]}

我想要这个表格:

dict = {"a":"b","a":"c","a":"d"}

【问题讨论】:

  • dict 键是唯一的。也许您正在寻找 listtuples 例如 [('a', 'b'), ('a', 'c'),..] ?如果您能告诉我们更多信息,也许我们可以为您的用例提出更好的数据结构
  • 你想用这个来完成什么?即使您可以有重复的键,当您使用dict['a'] 时,您期望返回什么?
  • 感谢您的回复。实际上,我正在尝试将字典 dict = {"a":["b","c","d"]} 存储在具有以下格式的 CSV 文件中:a,b a,c a,d
  • @azrara:这就是为什么您应该始终提供一些有关问题的上下文的原因。无法构建扁平化字典(因为键是唯一的),但不需要将内容写入 CSV 文件。如果你编辑你的问题,说你想要的实际上是一个 csv 文件,你可能会有答案。
  • @SergeBallesta 好的,谢谢。我将在另一个问题中提供更多背景信息。

标签: python python-3.x list dictionary


【解决方案1】:

从您的 cmets,您想将 dict 内容写入 csv 文件。不需要展平任何东西:

d = {"a":["b","c","d"]}    # never use dict or list as a variable name to not hide builtins
with open("file.csv", "w", newline="") as fd:
    wr = csv.writer(fd)
    for k,v in d.items():
        for x in v:
            wr.writerow((k,x))

【讨论】:

    【解决方案2】:

    由于字典具有唯一键,因此您无法创建目录。我认为元组列表会是一个更好的主意。这是一个关于如何实现它的示例。

    dict = {"a":["b","c","d"]}
    
    newList = list()
    
    for key, value in dict.items():
        for i in value:
            newList.append((key, i))
    
    print(newList)
    

    输出如下。

    [('a', 'b'), ('a', 'c'), ('a', 'd')]
    

    希望这会有所帮助。

    【讨论】:

    • 使用推导式比重复添加到列表更 pythonic(也更有效):newlist = [(key, i) for key, value in dict.items() for i in value]。对于 Python 初学者来说可能可读性较差,但确实更具 Python 风格。
    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2017-04-11
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    相关资源
    最近更新 更多