创建具有相同键的字典列表
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)
我有一个 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)