我正在返回列表清单,但以下内容似乎比应该更复杂:
new_list = []
for key, value in group.items():
new_list.extend([['%s%s%s%s%s' % (
ncode, vendor, extra, value['suffix'], tariff),
value['latest_cost'], value['rrp'], value['rb']] for tariff in value['trf']])
return new_list
答案 0 :(得分:8)
这并不是特别复杂。您有两个“级别”,即您正在扩展到一个级别的组中的项目。为此,它不是很复杂。
更多功能方式是将它们全部合并到一个嵌套列表表达式中,我认为这是可能的。但它肯定不会更具可读性,而且我个人认为这是单声道的(即,我不喜欢它)。
为了便于阅读,我个人也会将该列表表达式更改为for循环。
new_list = []
for key, value in group.items():
for tariff in value['trf']:
name = ''.join(ncode, vendor, extra, value['suffix'], tariff)
new_list.append(name, value['latest_cost'], value['rrp'], value['rb']])
return new_list
嗯,实际上,我会用它制作一个发生器,因为我喜欢它们:
def tariffs(group):
for key, value in group.items():
for tariff in value['trf']:
name = ''.join(ncode, vendor, extra, value['suffix'], tariff)
yield [name, value['latest_cost'], value['rrp'], value['rb']]
您可能还想考虑制作对象。只要你有词典列表或字典列表,就应该考虑改编课程。