创建具有相同键的字典列表

Create list of dictionaries with same keys

我有一个 pandas 系列的列表:

instaList =
[Bill        0.09
 Andy        12.89
 John        27.27
 Name: 5866, dtype: object,
 Bettia      0.32
 Tom         -10
 Levis       2
 Name: 4848, dtype: object,
 Shawn     4.61
 Tony      3.68
 Claude    0.69
 Name: 7448, dtype: object]

我想将其转换为字典列表,其中列表中的名称(例如“Bill”)是键“name”中的值,数字(例如 0.09)是键中的值键“值”:

 names = [
    {"name":"Bill","value":0.09},
    {"name":"Andy","value":12.88},
    {...}
 ]
 

我尝试了不同的方法:

names = []
attributesDicts = {"name":"","value":""}

for insta in instaList:
    for index, value in insta.iteritems():
        attributesDicts["name"] = index
        attributesDicts["value"] = str(value)
        names.append(attributesDicts)

但我得到了重复项或只是最后一个系列条目中的最后一个数据。

如果我打印 attributesDicts,我会得到正确的格式,但如果我尝试将它附加到列表中,它会给我重复项或只是最后一个条目。 你会怎么做?

非常感谢。

import pandas as pd

instaList = [pd.Series(name=5866, data=[['Bill', 0.09], ['Dan', 0.01], ['Lucia', 12.89]]),
             pd.Series(name=5866, data=[['Bettia', 0.29], ['Tom', 2.54], ['Tony', 4.89]])]

names = []

for pdseries in instaList:
    for i in pdseries.index:
        names.append({'name': pdseries[i][0], 'value': pdseries[i][1]})

print(names)

或作为一个班轮

import pandas as pd

instaList = [pd.Series(name=5866, data=[['Bill', 0.09], ['Dan', 0.01], ['Lucia', 12.89]]),
             pd.Series(name=5866, data=[['Bettia', 0.29], ['Tom', 2.54], ['Tony', 4.89]])]

names = [{'name': pdseries[i][0], 'value': pdseries[i][1]} for i in pdseries.index for pdseries in instaList]

问题是您创建了一个字典“attributesDicts”并将引用传递给列表。然后,你修改同一个字典,因为字典的引用对于每次迭代都是相同的。

你应该在 for:

中实例化字典
for insta in instaList:
for index, value in insta.iteritems():
    attributesDicts = {"name": index, "value": str(value)}
    names.append(attributesDicts)