将键中的多个值分成它们自己的 key/value 对

separate multiple values from a key into their own key/value pairs

如果我们有如下字典列表:

df=[{'answers': ['Yes', 'No'], 'question': 'status', 'type': 'string'}]

如何将上面的列表分成两个字典,答案键只有一个值:

df=[{'answers': ['Yes'], 'question': 'status', 'type': 'string'}, {'answers': ['No'], 'question': 'status', 'type': 'string'}]

任何指导将不胜感激。谢谢

我想你的意思是你在使用 DataFrames(因此你的变量名 df)。在那种情况下 pandas 已经有一个针对这个特定用例的函数:explode:

import pandas as pd
df = pd.DataFrame([{'answers': ['Yes', 'No'], 'question': 'status', 'type': 'string'}])
print(df.explode('answers'))

输出:

  answers question    type
0     Yes   status  string
0      No   status  string

编辑:您可以使用 to_dict:

轻松返回字典形式
df = df.explode('answers')
print(df.to_dict(orient='records'))

输出:

[{'answers': 'Yes', 'question': 'status', 'type': 'string'}, {'answers': 'No', 'question': 'status', 'type': 'string'}]

你可以试试这个:

  import copy 
    df=[{'answers': ['Yes', 'No'], 'question': 'status', 'type': 'string'}]
    df2=copy.deepcopy(df)
    content = df[0]
    for x,y in content.items():
      if (len(y) > 1) and isinstance(y,list):
        df[0][x]=y[0]
        df2[0][x]=y[1]
    # print(df)
    print(df2)
    print(df)

然而这仅适用于 2 个列表而不是更多