我在整理我的名单时遇到了麻烦
所以假设我有这个:
data = [
{'records-0': '1'}, {'records-0-item1': '2'}, {'records-0-item2': '3'},{'records-0-item3': '4'},
{'records-1': '1'}, {'records-1-item1': '2'}, {'records-1-item2': '3'},
]我想要的是根据我的键中的索引对我的列表进行排序(如果有任何意义的话)。
所以我的期望会是这样的。
sortedData = [
{0: [{'records-0': '1'}, {'records-0-item1': '2'}, {'records-0-item2': '3'},{'records-0-item3': '4'},]},
{1: [{'records-1': '1'}, {'records-1-item1': '2'}, {'records-1-item2': '3'},]
]我已经尝试查找分组列表,但这一切都是基于一个特定的键。像这样的https://www.geeksforgeeks.org/group-list-of-dictionary-data-by-particular-key-in-python/
有什么想法吗?
编辑:列表中的数据是基于用户输入的,因此也可以有:
{'records-2': '1'}, {'records-3': '1'}, {'records-4': '1'}, etc发布于 2021-09-08 12:09:45
一种方法是使用字典。
首先,只需定义一个助手方法来从字符串中获取键:
def get_key_from(string):
return int(string.split('-')[1])然后
from collections import defaultdict
sortedData_res = defaultdict(list)
for h in data:
k = next(iter(h))
sortedData_res[get_key_from(k)].append({k: ''})所以你终于得到了这个结果:
sortedData_res
#defaultdict(list,
# {0: [{'records-0': ''},
# {'records-0-item1': ''},
# {'records-0-item2': ''},
# {'records-0-item3': ''}],
# 1: [{'records-1': ''},
# {'records-1-item1': ''},
# {'records-1-item2': ''}]})或者调整代码以得到不同的信息。
例如,如果您使用.append(h),则可以获得:
#defaultdict(list,
# {0: [{'records-0': '1'},
# {'records-0-item1': '2'},
# {'records-0-item2': '3'},
# {'records-0-item3': '4'}],
# 1: [{'records-1': '1'},
# {'records-1-item1': '2'},
# {'records-1-item2': '3'}]})发布于 2021-09-08 12:04:59
我建议您重新格式化您的sortedData并删除列表。你只能把你的数据收集到数据库里。
编辑的示例:(应该按原样工作)
def sort_data(l_: list):
d_ = dict()
for d in l_:
for k, v in d.items():
i = re.split('-', k)[1]
if not d_.get(int(i)):
d_[int(i)] = dict()
d_[int(i)][k] = v
continue
d_[int(i)][k] = v
return d_>>> data = [
{'records-0': '1'}, {'records-0-item1': '2'}, {'records-0-item2': '3'}, {'records-0-item3': '4'},
{'records-1': '1'}, {'records-1-item1': '2'}, {'records-1-item2': '3'},
]
>>> print(sort_data(data))
{
0: {
'records-0': '1',
'records-0-item1': '2',
'records-0-item2': '3',
'records-0-item3': '4'
},
1: {
'records-1': '1',
'records-1-item1': '2',
'records-1-item2': '3'
}
}https://stackoverflow.com/questions/69102556
复制相似问题