簡體   English   中英

列表理解期間的Python字典分配

[英]Python dictionary assignment during list comprehension

我有這樣的權限字典:

{'READ': True,  'WRITE': None, 'DELETE': False}

實際的詞典具有更多的鍵,但這足以滿足示例要求。 我想遍歷字典並將None任何值更改為False 使用for循環可以很容易地做到這一點,但是我想知道是否有一種慣用的方式來實現列表理解。 如果它是一個對象而不是字典,我將這樣做:

[setattr(k, v, False) for k, v in object if v is None]

(或類似),但我不確定如何不使用dict.__setitem__

這對於解決我的問題不是很重要,但我只是想知道是否有更簡潔的方法

您是否考慮過字典理解

>>> dct = {'READ': True,  'WRITE': None, 'DELETE': False}
>>> dct = {k:v if v is not None else False for k,v in dct.items()}
>>> dct
{'READ': True, 'WRITE': False, 'DELETE': False}
>>>

注意:如果使用的是Python 2.x,則應使用dict.iteritems而不是dict.items 這樣做將提高效率,因為前者返回一個迭代器,而后者則返回一個列表。

不要對副作用使用列表理解; 在這里生成None值列表None

相反,請使用dict理解:

{k: False if v is None else v for k, v in object.iteritems()}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM