用python如何合并下列两个列表达到第三个列表的效果?

用python如何合并下列两个列表达到第三个列表的效果?

用python如何合并下列前两个列表达到第三个列表的效果?

book1=[{"高校":["南京大学",天津大学","南开大学"]},{"国家":["印度","美国"]}]

book2=[{"高校":["南京大学","东华大学","中南大学"]},{"国家":["乌克兰","俄罗斯"]},{"论坛":["顶尖科学家论坛","统计之都"]}]

book3=[{"高校":["南京大学",天津大学","南开大学","东华大学","中南大学"]},{"国家":["印度","美国","乌克兰","俄罗斯"],{"论坛":["顶尖科学家论坛","统计之都"]}]

*数据结构可以调整为:每个book都是一个字典;
字典键名数量较多,需要自动遍历各键值;
最重要的,仔细观察前后键的值,合并后需要使键值成为原来的并集*
以上列表为简化后示例,实际列表包含更多内容


回答:

你的源文件有语法问题,此外合并还需要考虑book1和book2数据结构问题,如果book1和book2数据结构是稳定的,比如子结构都是 先高校,再国家,然后论坛名称,则这个合并其实不难,当然合并时还需要注意名称重复的问题。大致是:

GX=[]

GJ=[]

LT=[]

for i in book1[0]["高校"]:

GX.append(i)

for i in book1[1]["国家"]:

GJ.append(i)

for i in book2[0]["高校"]:

if GX.count(i)== 0:

GX.append(i)

for i in book2[1]["国家"]:

if GJ.count(i)== 0:

GJ.append(i)

for i in book2[2]["论坛"]:

LT.append(i)

newBook3=[{"高校":GX},{"国家":GJ},{"论坛":LT}]

如果没有顺序,则前面还要先判断键名才针对的进行遍历添加。

python">GX=[]

GJ=[]

LT=[]

def appendList(aList):

for i in range(len(aList)):

for k,v in aList[i].items():

if k == '高校' :

CList=GX

if k == '国家':

CList=GJ

if k == '论坛':

CList = LT

for z in v:

if CList.count(z) == 0:

CList.append(z)

appendList(book1)

appendList(book2)

Book3=[{"高校":GX},{"国家":GJ},{"论坛":LT}]

不确定类型的,其实可以用:

newOBJ={}

newBook=[]

def appendList(aList):

for i in range(len(aList)):

for k,v in aList[i].items():

if k in newOBJ:

CList = newOBJ[k]

else :

newOBJ[k]=[]

CList = newOBJ[k]

for z in v:

if CList.count(z) == 0:

CList.append(z)

appendList(book1)

appendList(book2)

for k,v in newOBJ.items():

newBook.append({k:v})

print(str(newBook))

以上是 用python如何合并下列两个列表达到第三个列表的效果? 的全部内容, 来源链接: utcz.com/p/938304.html

回到顶部