2017-04-11 41 views
2

我在我的第一個python項目中使用了列表。Python從列表項目中獲取特定信息並創建新列表項目

data_items = [{"ID":0x1111, "Description":"data1", "Writable":"FALSE"}, 
     {"ID":0x2222, "Description":"data2", "Writable":"TRUE"}, 
     {"ID":0x3333, "Description":"data3", "Writable":"FALSE"}, 
     {"ID":0x4444, "Description":"data4", "Writable":"TRUE"}] 

我想用另一個列表名稱 「new_data_items」,並顯示像下面的例子只是真實情況:如何寫for循環這個

new_data_items = [{"ID":0x2222, "Description":"data2", "Writable":"TRUE"}, 
      {"ID":0x4444, "Description":"data4", "Writable":"TRUE"}] 
+0

你嘗試過這麼遠嗎? – FLab

+1

[List filtering:list comprehension vs. lambda + filter]可能的重複項(http://stackoverflow.com/questions/3013449/list-filtering-list-comprehension-vs-lambda-filter) – hlt

+0

'[item for item in data_items if item.get(「Writable」)==「TRUE」]' –

回答

1

你可以做類似如下:

new_data_items = [] 
for item in data_items: 
    if item['Writable'] == 'TRUE': 
     new_data_items.append(item) 

不過列表解析會更快和更簡潔:

new_data_items = [item for item in data_items if item['Writable'] == 'TRUE'] 
+0

這比理解更慢並且比用lambda過濾更爲詳細 –

+0

正如@JaredSmith指出的那樣,列表理解將更加快速。 – valeas

+0

按預期工作... –

2

使用Python列表壓縮

[_ for _ in data_items if _.get('Writable') == 'TRUE'] 

Chk此鏈接:https://repl.it/HEyl/0

+1

只要好奇,爲什麼要使用'_'? '_'通常用於不需要的變量。 –

+0

_用於python中的臨時變量。當你不關心變量名時,最好使用'_'而不是使用i,j –

+0

@Himanshudua其實我認爲Erik是對的。下劃線通常表示一個不會被使用的變量。 –

4

您可以使用filter要做到這一點:

filter(lambda x: x['Writable'] == 'TRUE', data_items) 

注意,過濾器返回一個迭代器,所以你可能還需要將其轉換成一個列表:

list(filter(lambda x: x['Writable'] == 'TRUE', data_items)) 

如果「可寫」字段可能不存在的一些記錄與.get替換索引:

list(filter(lambda x: x.get('Writable') == 'TRUE', data_items)) 
1
data_items = [{"ID":0x1111, "Description":"data1", "Writable":"FALSE"}, 
    {"ID":0x2222, "Description":"data2", "Writable":"TRUE"}, 
    {"ID":0x3333, "Description":"data3", "Writable":"FALSE"}, 
    {"ID":0x4444, "Description":"data4", "Writable":"TRUE"}] 

new_data = list() 
for element in data_items: 
    value = element.get('Writable') 
    if not value == "FALSE": 
     new_data.append(element) 

print new_data