【发布时间】:2016-01-18 15:13:47
【问题描述】:
我无法理解这一点。还是我把事情复杂化了?我正在尝试使这段代码更“Pythonic”。
statuses = {record['id'] : [] for record in data}
for record in data:
for status in record['statuses']:
data = {
'status_code': status['statusCode'],
'short_desc': status['statusShortDesc'],
}
if 'statusLongDesc' in status:
data.update({'long_desc': status['statusLongDesc']})
else:
data.update({'long_desc': ''})
statuses[record['id']] += [data]
}
}
这里有几个挑战,我知道下面的代码是错误的,但我试图在不知道如何的情况下解决我想要的:
-
如何在理解中更新字典中的列表?顺着这个思路。这行得通吗?我觉得有些不对劲。我是不是被大括号迷住了?
statuses = { { record['id']: list({ 'status_code': status['statusCode'], 'short_desc': status['statusShortDesc'], 'long_desc': '' }) } for record in data for status in record['statuses'] }
这会产生TypeError: unhashable type: 'dict'
- 我怎样才能不重复数据部分,就像在我的原始代码中调整 long_desc 一样? (我的字典实际上要长得多,一行重复一遍似乎很疯狂。)喜欢:
then if 'statusLongDesc' in status list.extend('long_desc': status['statusLongDesc'])添加到上述理解中。
【问题讨论】:
-
您的原始代码更像是“pythonic”IMO。它很容易阅读,意图很明确。 Pythonic 意味着简短、简洁且易于阅读。
标签: python list-comprehension dictionary-comprehension