我的输入有一个字典,具有以下特征:
- 每个值都可以是整数、字符串或可迭代的(字符串除外)。
- 如果元素是可迭代的,则该可迭代中的每个元素将只是一个字符串或整数。
前任:
mydict = {
'one': 1,
'two': '23',
'three': 3,
'four': [
7,
'6',
5,
8
],
'nine': 9
}
我需要将输入转换为一个元组列表,其中每个元组都是一个键/值对。对于可迭代元素,每个元素都有一个键/值对,按值排序。例如,上面的输出应该是:
('four', 5)
('four', 7)
('four', 8)
('four', '6')
('nine', 9)
('one', 1)
('three', 3)
('two', '2')
我目前使用以下生成器实现了这个:
def dict_to_sorted_tuples(unsorted_dict):
for key in sorted(unsorted_dict):
if isinstance(unsorted_dict[key], basestring):
yield key, unsorted_dict[key]
continue
try:
for v in sorted(unsorted_dict[key]):
yield key, v
except:
yield key, unsorted_dict[key]
print list(dict_to_sorted_tuples(mydict))
我觉得这可以以更清洁的方式完成,有什么改进的建议吗?