Я думаю, DataFrame
из pandas
- хорошее решение для вас.
import pandas as pd
Прежде всего, я объединил данные, разделенные в один список.
data = [
[{'creatorType': 'author', 'name': '舒仁輝'}],
[{'creatorType': 'author', 'firstName': 'On Cho', 'lastName': 'Ng'},
{'creatorType': 'author', 'firstName': 'Q. Edward', 'lastName': 'Wang'}],
[{'creatorType': 'author', 'firstName': 'Peter K.', 'lastName': 'Bol'},
{'creatorType': 'editor', 'firstName': 'Dieter Kuhn', 'lastName': 'Helga Stahl'}]
]
authors = []
for d in data: authors += d
print (authors)
[{'creatorType': 'author', 'name': '舒仁輝'}, {'creatorType': 'author', 'firstName': 'On Cho', 'lastName': 'Ng'}, {'creatorType': 'author', 'firstName': 'Q. Edward', 'lastName': 'Wang'}, {'creatorType': 'author', 'firstName': 'Peter K.', 'lastName': 'Bol'}, {'creatorType': 'editor', 'firstName': 'Dieter Kuhn', 'lastName': 'Helga Stahl'}]
Создан DataFrame из authors
df = pd.DataFrame(authors)
print (df)
creatorType firstName lastName name
0 author NaN NaN 舒仁輝
1 author On Cho Ng NaN
2 author Q. Edward Wang NaN
3 author Peter K. Bol NaN
4 editor Dieter Kuhn Helga Stahl NaN
И я сделал пример для установки значения для конкретного элемента.
df.at[df.name == '舒仁輝','firstName'] = 'John'
df.at[df.firstName.str.contains('Cho'), 'creatorType'] = 'editor'
print (df)
creatorType firstName lastName name
0 author John NaN 舒仁輝
1 editor On Cho Ng NaN
2 author Q. Edward Wang NaN
3 author Peter K. Bol NaN
4 editor Dieter Kuhn Helga Stahl NaN