【发布时间】:2022-01-16 03:21:23
【问题描述】:
我有一个字典列表:-
test = [{'Sequence': 'A', 'Tag': '20', 'Option': None},
{'Sequence': 'A', 'Tag': '23', 'Option': None},
{'Sequence': 'A', 'Tag': '51A', 'Option': None},
{'Sequence': 'A', 'Tag': '50A', 'Option': 'A'},
{'Sequence': 'A', 'Tag': '50A', 'Option': 'F'},
{'Sequence': 'A', 'Tag': '50A', 'Option': 'K'},
{'Sequence': 'A', 'Tag': '52A', 'Option': 'A'},
{'Sequence': 'A', 'Tag': '52A', 'Option': 'B'},
{'Sequence': 'A', 'Tag': '52A', 'Option': 'C'},
{'Sequence': 'A', 'Tag': '26T', 'Option': None},
{'Sequence': 'A', 'Tag': '77B', 'Option': None},
{'Sequence': 'A', 'Tag': '71A', 'Option': None},
{'Sequence': 'B', 'Tag': '36', 'Option': None},
{'Sequence': 'B', 'Tag': '21', 'Option': None},
{'Sequence': 'B', 'Tag': '32B', 'Option': None},
{'Sequence': 'B', 'Tag': '32B', 'Option': None},
{'Sequence': 'B', 'Tag': '50A', 'Option': 'A'},
{'Sequence': 'B', 'Tag': '50A', 'Option': 'F'},
{'Sequence': 'B', 'Tag': '50A', 'Option': 'K'},
{'Sequence': 'B', 'Tag': '52A', 'Option': 'A'},
{'Sequence': 'B', 'Tag': '52A', 'Option': 'B'},
{'Sequence': 'B', 'Tag': '52A', 'Option': 'C'},
{'Sequence': 'B', 'Tag': '57A', 'Option': 'A'},
{'Sequence': 'B', 'Tag': '57A', 'Option': 'C'},
{'Sequence': 'B', 'Tag': '59A', 'Option': None},
{'Sequence': 'B', 'Tag': '59A', 'Option': 'A'},
{'Sequence': 'B', 'Tag': '59A', 'Option': 'F'},
{'Sequence': 'B', 'Tag': '70', 'Option': None},
{'Sequence': 'B', 'Tag': '26T', 'Option': None},
{'Sequence': 'B', 'Tag': '77B', 'Option': None},
{'Sequence': 'B', 'Tag': '33B', 'Option': None},
{'Sequence': 'B', 'Tag': '33B', 'Option': None},
{'Sequence': 'B', 'Tag': '71A', 'Option': None},
{'Sequence': 'B', 'Tag': '71F', 'Option': None},
{'Sequence': 'B', 'Tag': '71F', 'Option': None},
{'Sequence': 'B', 'Tag': '71G', 'Option': None},
{'Sequence': 'B', 'Tag': '71G', 'Option': None},
{'Sequence': 'B', 'Tag': '36', 'Option': None},
{'Sequence': 'C', 'Tag': '32A', 'Option': None},
{'Sequence': 'C', 'Tag': '32A', 'Option': None},
{'Sequence': 'C', 'Tag': '32A', 'Option': None},
{'Sequence': 'C', 'Tag': '19', 'Option': None},
{'Sequence': 'C', 'Tag': '71G', 'Option': None},
{'Sequence': 'C', 'Tag': '71G', 'Option': None},
{'Sequence': 'C', 'Tag': '13C', 'Option': None},
{'Sequence': 'C', 'Tag': '53A', 'Option': 'A'},
{'Sequence': 'C', 'Tag': '53A', 'Option': 'C'},
{'Sequence': 'C', 'Tag': '54A', 'Option': None},
{'Sequence': 'C', 'Tag': '72', 'Option': None}]
我可以根据“序列”键创建一个单独的字典列表:
sorted_data = sorted(test, key=itemgetter('Sequence'))
for key, group in itertools.groupby(sorted_data, key=lambda x: x['Sequence']):
print(key, list(group))
A [{'Sequence': 'A', 'Tag': '20', 'Option': None}, {'Sequence': 'A', 'Tag': '23', 'Option': None}, {'Sequence': 'A', 'Tag': '51A', 'Option': None}, {'Sequence': 'A', 'Tag': '50A', 'Option': 'A'}, {'Sequence': 'A', 'Tag': '50A', 'Option': 'F'}, {'Sequence': 'A', 'Tag': '50A', 'Option': 'K'}, {'Sequence': 'A', 'Tag': '52A', 'Option': 'A'}, {'Sequence': 'A', 'Tag': '52A', 'Option': 'B'}, {'Sequence': 'A', 'Tag': '52A', 'Option': 'C'}, {'Sequence': 'A', 'Tag': '26T', 'Option': None}, {'Sequence': 'A', 'Tag': '77B', 'Option': None}, {'Sequence': 'A', 'Tag': '71A', 'Option': None}]
B [{'Sequence': 'B', 'Tag': '36', 'Option': None}, {'Sequence': 'B', 'Tag': '21', 'Option': None}, {'Sequence': 'B', 'Tag': '32B', 'Option': None}, {'Sequence': 'B', 'Tag': '32B', 'Option': None}, {'Sequence': 'B', 'Tag': '50A', 'Option': 'A'}, {'Sequence': 'B', 'Tag': '50A', 'Option': 'F'}, {'Sequence': 'B', 'Tag': '50A', 'Option': 'K'}, {'Sequence': 'B', 'Tag': '52A', 'Option': 'A'}, {'Sequence': 'B', 'Tag': '52A', 'Option': 'B'}, {'Sequence': 'B', 'Tag': '52A', 'Option': 'C'}, {'Sequence': 'B', 'Tag': '57A', 'Option': 'A'}, {'Sequence': 'B', 'Tag': '57A', 'Option': 'C'}, {'Sequence': 'B', 'Tag': '59A', 'Option': None}, {'Sequence': 'B', 'Tag': '59A', 'Option': 'A'}, {'Sequence': 'B', 'Tag': '59A', 'Option': 'F'}, {'Sequence': 'B', 'Tag': '70', 'Option': None}, {'Sequence': 'B', 'Tag': '26T', 'Option': None}, {'Sequence': 'B', 'Tag': '77B', 'Option': None}, {'Sequence': 'B', 'Tag': '33B', 'Option': None}, {'Sequence': 'B', 'Tag': '33B', 'Option': None}, {'Sequence': 'B', 'Tag': '71A', 'Option': None}, {'Sequence': 'B', 'Tag': '71F', 'Option': None}, {'Sequence': 'B', 'Tag': '71F', 'Option': None}, {'Sequence': 'B', 'Tag': '71G', 'Option': None}, {'Sequence': 'B', 'Tag': '71G', 'Option': None}, {'Sequence': 'B', 'Tag': '36', 'Option': None}]
C [{'Sequence': 'C', 'Tag': '32A', 'Option': None}, {'Sequence': 'C', 'Tag': '32A', 'Option': None}, {'Sequence': 'C', 'Tag': '32A', 'Option': None}, {'Sequence': 'C', 'Tag': '19', 'Option': None}, {'Sequence': 'C', 'Tag': '71G', 'Option': None}, {'Sequence': 'C', 'Tag': '71G', 'Option': None}, {'Sequence': 'C', 'Tag': '13C', 'Option': None}, {'Sequence': 'C', 'Tag': '53A', 'Option': 'A'}, {'Sequence': 'C', 'Tag': '53A', 'Option': 'C'}, {'Sequence': 'C', 'Tag': '54A', 'Option': None}, {'Sequence': 'C', 'Tag': '72', 'Option': None}]
但是,在创建上述子列表时,如果在这些情况下存在具有不同选项的重复标签,例如标签“52A”:
{'Sequence': 'A', 'Tag': '52A', 'Option': 'A'},
{'Sequence': 'A', 'Tag': '52A', 'Option': 'B'},
{'Sequence': 'A', 'Tag': '52A', 'Option': 'C'}
我只想随机选择 1 个字典并更新该字典,如下所示:-
{'Sequence': 'A', 'Tag': '52B', 'Option': 'B'}
希望我能够解释这个问题。如果我需要重新考虑分解原始列表的方法,我们将不胜感激。
【问题讨论】:
标签: python python-3.x dictionary