Python 嵌套列表操作
Python Nested List manipulation
大家好 python 开发者,
我正在玩 python 列表和 Pandas 库,但在列表操作任务中遇到了麻烦。我想根据每个嵌套列表索引 0 处的相同状态名称,将所有 test_list[i][0] 字典项合并到一个嵌套列表索引中。
示例输入:
test_list= [['Alabama', {'Baldwin County': 182265}],
['Alabama', {'Barbour County': 27457}],
['Arkansas', {'Newton County': 8330}],
['Arkansas', {'Perry County': 10445}],
['Arkansas', {'Phillips County': 21757}],
['California', {'Madera County': 150865}],
['California', {'Marin County': 252409}],
['Colorado', {'Adams County': 441603}],
['Colorado', {'Alamosa County': 15445}],
['Colorado', {'Arapahoe County': 572003}]
]
示例输出:
test_list1= [['Alabama', {'Baldwin County': 182265, 'Barbour County': 27457}],
['Arkansas', {'Newton County': 8330, 'Perry County': 10445, 'Phillips County': 21757}],
['California', {'Madera County': 150865, 'Marin County': 252409}],
['Colorado', {'Adams County': 441603, 'Alamosa County': 15445, 'Arapahoe County': 572003}]
]
我尝试了很多方法来解决这个问题,但都没有成功,所以 far.I 我是初学者 python 开发人员。
感谢您提前提供帮助。
方法
使用 collections.defaultdict 作为按公共字段(在本例中为按州)对数据进行分组的方法。
对于每个状态,defaultdict 创建一个新的 dict 并使用 dict.update() 方法.
将结果转回列表,并将 list
应用于字典的项目(key/value 对)。
工作代码
>>> from pprint import pprint
>>> from collections import defaultdict
>>> d = defaultdict(dict)
>>> for state, info in test_list:
d[state].update(info)
>>> result = list(d.items())
>>> pprint(result)
[('Alabama', {'Baldwin County': 182265, 'Barbour County': 27457}),
('Arkansas',
{'Newton County': 8330, 'Perry County': 10445, 'Phillips County': 21757}),
('California', {'Madera County': 150865, 'Marin County': 252409}),
('Colorado',
{'Adams County': 441603, 'Alamosa County': 15445, 'Arapahoe County': 572003})]
Python3.5 或更高版本
tmp_dict = {}
for lst in test_list:
city = lst[0]
country = lst[1]
if city in tmp_dict:
tmp_dict[city] = {**tmp_dict[city], **country}
else:
tmp_dict[city] = country
print(tmp_dict) #you will get dict result
#If you want to get list only
output_result = []
for k in tmp_dict:
tmp_list.append([k,tmp_dict[k]])
print(output_result) #you will get list result
大家好 python 开发者, 我正在玩 python 列表和 Pandas 库,但在列表操作任务中遇到了麻烦。我想根据每个嵌套列表索引 0 处的相同状态名称,将所有 test_list[i][0] 字典项合并到一个嵌套列表索引中。
示例输入:
test_list= [['Alabama', {'Baldwin County': 182265}],
['Alabama', {'Barbour County': 27457}],
['Arkansas', {'Newton County': 8330}],
['Arkansas', {'Perry County': 10445}],
['Arkansas', {'Phillips County': 21757}],
['California', {'Madera County': 150865}],
['California', {'Marin County': 252409}],
['Colorado', {'Adams County': 441603}],
['Colorado', {'Alamosa County': 15445}],
['Colorado', {'Arapahoe County': 572003}]
]
示例输出:
test_list1= [['Alabama', {'Baldwin County': 182265, 'Barbour County': 27457}],
['Arkansas', {'Newton County': 8330, 'Perry County': 10445, 'Phillips County': 21757}],
['California', {'Madera County': 150865, 'Marin County': 252409}],
['Colorado', {'Adams County': 441603, 'Alamosa County': 15445, 'Arapahoe County': 572003}]
]
我尝试了很多方法来解决这个问题,但都没有成功,所以 far.I 我是初学者 python 开发人员。 感谢您提前提供帮助。
方法
使用 collections.defaultdict 作为按公共字段(在本例中为按州)对数据进行分组的方法。
对于每个状态,defaultdict 创建一个新的 dict 并使用 dict.update() 方法.
将结果转回列表,并将
list
应用于字典的项目(key/value 对)。
工作代码
>>> from pprint import pprint
>>> from collections import defaultdict
>>> d = defaultdict(dict)
>>> for state, info in test_list:
d[state].update(info)
>>> result = list(d.items())
>>> pprint(result)
[('Alabama', {'Baldwin County': 182265, 'Barbour County': 27457}),
('Arkansas',
{'Newton County': 8330, 'Perry County': 10445, 'Phillips County': 21757}),
('California', {'Madera County': 150865, 'Marin County': 252409}),
('Colorado',
{'Adams County': 441603, 'Alamosa County': 15445, 'Arapahoe County': 572003})]
Python3.5 或更高版本
tmp_dict = {}
for lst in test_list:
city = lst[0]
country = lst[1]
if city in tmp_dict:
tmp_dict[city] = {**tmp_dict[city], **country}
else:
tmp_dict[city] = country
print(tmp_dict) #you will get dict result
#If you want to get list only
output_result = []
for k in tmp_dict:
tmp_list.append([k,tmp_dict[k]])
print(output_result) #you will get list result