用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