[英]How sort a zipped dictionary with a tupled list?
我有一个字典,其中包含作为元组的项目,其中包含两个元素:id 和秒(最后一个在列表中)。
我想对它进行排序,如果有任何元组的列表包含多个元素,则按照以秒为单位的顺序(从最小到最大)将其与其 id 分开,如示例所示
代码:
dictionary.items()
dict_items(
[
('268 084 071', [36900]),
('582 992 529', [43200]),
('627 335 2770', [50400, 322800]), # tuple with id and a list of seconds
('171-451-814', [116600]),
('537 430 002', [310200]),
('366 342 588', [380900]),
('994-4098-8201', [387200]),
('981-2739-3075', [396200])
]
)
预期的output:字典到有序列表,以秒为单位从最小到最大,并将列表中的元素与多个元素分开并将每个元素与其id分组
[
('268 084 071', [36900]),
('582 992 529', [43200]),
('627 335 2770', [50400]), # was separated
('171-451-814', [116600]),
('537 430 002', [310200]),
('627 335 2770', [322800]), # in here
('366 342 588', [380900]),
('994-4098-8201', [387200]),
('981-2739-3075', [396200])
]
由于重复的键,你不能用字典做你想做的事情,但这会创建一个包含分离数据的列表:
d = dict([('268 084 071', [36900]),
('582 992 529', [43200]),
('627 335 2770', [50400, 322800]), # tuple with id and a list of seconds
('171-451-814', [116600]),
('537 430 002', [310200]),
('366 342 588', [380900]),
('994-4098-8201', [387200]),
('981-2739-3075', [396200])])
lst = []
for key,values in d.items():
for value in values: # make values separate entries in the list
lst.append((key,value))
lst.sort(key=lambda x:x[1]) # re-sort by value when done
for item in lst:
print(item)
Output:
('268 084 071', 36900)
('582 992 529', 43200)
('627 335 2770', 50400)
('171-451-814', 116600)
('537 430 002', 310200)
('627 335 2770', 322800)
('366 342 588', 380900)
('994-4098-8201', 387200)
('981-2739-3075', 396200)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.