2017-04-02 84 views
0

好詞典列表,這樣你就可以改變與簡單的數字列表中的一個元素值是這樣的:更改與元素本身的屬性與列表理解

>>> a=[1,2,3,4,5,1,2,3,4,5,1] 
>>> for n,i in enumerate(a): 
... if i==1: 
...  a[n]=10 
... 
>>> a 
[10, 2, 3, 4, 5, 10, 2, 3, 4, 5, 10] 

與列表理解:

>>> a=[1,2,3,1,3,2,1,1] 
>>> a = [4 if x==1 else x for x in a] 
>>> a 
[4, 2, 3, 4, 3, 2, 4, 4] 

但是,如果我有一個詞典列表,我可以改變不僅一個元素,而且它的一個屬性,使用列表理解?有沒有一些表達?

+2

嘗試同時使用列表和[字典解析](https://stackoverflow.com/questions/14507591/python-dictionary-comprehension);像列表理解一樣添加條件表達式。請注意,在第一個示例中,更改正在迭代的列表是不好的做法。像這樣修復它:'enumerate(a [:])'(迭代列表'a'的副本)。在第二個例子中,你並沒有「改變」列表,但實際上你正在創建一個新列表並將其重新分配給'a'。 – pylang

回答

1

難道這就是你要找的人:

a = [{1: [1,2,3], 2: [3,4,5]}] 

a = [{k: [1,1,1]} if k == 2 else {k: v} for x in a for k, v in x.items()]