我有一个列表,列表中有多个字典。我想将列表合并为一个。在这里,我正在使用for循环合并但无法做到这一点。为我提供一些解决方案。在执行过程中,可以增加数据字典列表中的多重列表。所以我用for循环来获取它
这是示例代码:
datas = [
[{'state': 'tamil nadu', 'city': 'tirunelveli', 'haps': 'hap0', 'serial': '1'},
{'state': 'tamil nadu', 'city': 'nagerkoil', 'haps': 'hap0', 'serial': '2'},
{'state': 'tamil nadu', 'city': 'tuticorin', 'haps': 'hap0', 'serial': '3'},
{'state': 'tamil nadu', 'city': 'madurai', 'haps': 'hap0', 'serial': '4'},
{'state': 'tamil nadu', 'city': 'chennai', 'haps': 'hap0', 'serial': '5'}],
[{'state': 'kerala', 'city': 'palakad', 'haps': 'hap1', 'serial': '6'},
{'state': 'kerala', 'city': 'guruvayor', 'haps': 'hap1', 'serial': '7'},
{'state': 'kerala', 'city': 'kolikodu', 'haps': 'hap1', 'serial': '8'},
{'state': 'kerala', 'city': 'kottayam', 'haps': 'hap1', 'serial': '9'},
{'state': 'kerala', 'city': 'idukki', 'haps': 'hap1', 'serial': '10'}],
[]
]
d = []
def throttle(d):
if data !=[]:
d.append(data)
print(d)
else:
print("no data")
for data in datas:
throttle(data)
我得到的输出:
[{'city': 'tirunelveli', 'serial': '1', 'haps': 'hap0', 'state': 'tamil nadu'}, {'city': 'nagerkoil', 'serial': '2', 'haps': 'hap0', 'state': 'tamil nadu'}, {'city': 'tuticorin', 'serial': '3', 'haps': 'hap0', 'state': 'tamil nadu'}, {'city': 'madurai', 'serial': '4', 'haps': 'hap0', 'state': 'tamil nadu'}, {'city': 'chennai', 'serial': '5', 'haps': 'hap0', 'state': 'tamil nadu'}, [...]]
[{'city': 'palakad', 'serial': '6', 'haps': 'hap1', 'state': 'kerala'}, {'city': 'guruvayor', 'serial': '7', 'haps': 'hap1', 'state': 'kerala'}, {'city': 'kolikodu', 'serial': '8', 'haps': 'hap1', 'state': 'kerala'}, {'city': 'kottayam', 'serial': '9', 'haps': 'hap1', 'state': 'kerala'}, {'city': 'idukki', 'serial': '10', 'haps': 'hap1', 'state': 'kerala'}, [...]]
no data
必填输出:
[{'city': 'tirunelveli', 'serial': '1', 'haps': 'hap0', 'state': 'tamil nadu'}, {'city': 'nagerkoil', 'serial': '2', 'haps': 'hap0', 'state': 'tamil nadu'}, {'city': 'tuticorin', 'serial': '3', 'haps': 'hap0', 'state': 'tamil nadu'}, {'city': 'madurai', 'serial': '4', 'haps': 'hap0', 'state': 'tamil nadu'}, {'city': 'chennai', 'serial': '5', 'haps': 'hap0', 'state': 'tamil nadu'},{'city': 'palakad', 'serial': '6', 'haps': 'hap1', 'state': 'kerala'}, {'city': 'guruvayor', 'serial': '7', 'haps': 'hap1', 'state': 'kerala'}, {'city': 'kolikodu', 'serial': '8', 'haps': 'hap1', 'state': 'kerala'}, {'city': 'kottayam', 'serial': '9', 'haps': 'hap1', 'state': 'kerala'}, {'city': 'idukki', 'serial': '10', 'haps': 'hap1', 'state': 'kerala'}]
no data
答案 0 :(得分:4)
您可以这样做:
print([x for li in datas for x in li])
输出:
[{'state': 'tamil nadu', 'city': 'tirunelveli', 'haps': 'hap0', 'serial': '1'}, {'state': 'tamil nadu', 'city': 'nagerkoil', 'haps': 'hap0', 'serial': '2'}, {'state': 'tamil nadu', 'city': 'tuticorin', 'haps': 'hap0', 'serial': '3'}, {'state': 'tamil nadu', 'city': 'madurai', 'haps': 'hap0', 'serial': '4'}, {'state': 'tamil nadu', 'city': 'chennai', 'haps': 'hap0', 'serial': '5'}, {'state': 'kerala', 'city': 'palakad', 'haps': 'hap1', 'serial': '6'}, {'state': 'kerala', 'city': 'guruvayor', 'haps': 'hap1', 'serial': '7'}, {'state': 'kerala', 'city': 'kolikodu', 'haps': 'hap1', 'serial': '8'}, {'state': 'kerala', 'city': 'kottayam', 'haps': 'hap1', 'serial': '9'}, {'state': 'kerala', 'city': 'idukki', 'haps': 'hap1', 'serial': '10'}]
答案 1 :(得分:3)
看起来是itertools.chain.from_iterable
的一个好用例:
>>> from itertools import chain
>>> list(chain.from_iterable(datas))
[{'state': 'tamil nadu', 'city': 'tirunelveli', 'haps': 'hap0', 'serial': '1'}, {'state': 'tamil nadu', 'city': 'nagerkoil', 'haps': 'hap0', 'serial': '2'}, {'state': 'tamil nadu', 'city': 'tuticorin', 'haps': 'hap0', 'serial': '3'}, {'state': 'tamil nadu', 'city': 'madurai', 'haps': 'hap0', 'serial': '4'}, {'state': 'tamil nadu', 'city': 'chennai', 'haps': 'hap0', 'serial': '5'}, {'state': 'kerala', 'city': 'palakad', 'haps': 'hap1', 'serial': '6'}, {'state': 'kerala', 'city': 'guruvayor', 'haps': 'hap1', 'serial': '7'}, {'state': 'kerala', 'city': 'kolikodu', 'haps': 'hap1', 'serial': '8'}, {'state': 'kerala', 'city': 'kottayam', 'haps': 'hap1', 'serial': '9'}, {'state': 'kerala', 'city': 'idukki', 'haps': 'hap1', 'serial': '10'}]
答案 2 :(得分:1)
无法获得所需内容的原因是您在datas
中嵌套了列表,因此应该扩展列表,而不是追加列表。
您可以尝试以下操作:
d = []
for data in datas:
if data:
d += data
或使用filter
和reduce
,filter
用于过滤空列表,reduce
用于组合。
from functools import reduce
import operator
d = list(reduce(operator.__add__, filter(None, datas)))