![](/img/trans.png)
[英]Having trouble efficiently extracting key from a dict if key value's value is member of separate list
[英]More elegant way to separate a list of dict(s) based on a value from an identical key in each dict in a class
我從程序中獲得了一個字典列表的返回,每個字典在每個字典中具有相同的鍵,我想基於每個字典中的:value設置一個類屬性列表。 字典列表可以具有多個相同的值
[
{"key":"value"},
{"key":"differentvalue"},
{"key":"value"},
{"key":"newValue"},
{"key":"newValue"}
]
現在我有一個像這樣的課程
class DynamicAttributesFromDict:
def __init__(self, listed):
for i in range(len(listed)):
name = listed[i]["key"]
p = getattr(self, name, [])
p.append(listed[i])
setattr(self, name, p)
我有這種方式,這樣我就可以通過obj.newValue或obj.value等訪問某些字典列表。這只是一個示例,列表中的實際字典要更長,並且是由程序創建的。
我應該首先使用hasattr來檢查屬性和要附加的getattr嗎?
以上工作,但似乎粗略
python類的一種新東西,因此任何幫助將不勝感激
編輯:
我認為更好的表述
from pprint import pprint
listdict = [
{"key":"value", "difkey":"something"},
{"key":"differentvalue", "xkey":"yvalue"},
{"key":"value"},
{"key":"newValue"},
{"key":"newValue"}
]
class DynamicAttributesFromDict:
def __init__(self, listed):
for i in range(len(listed)):
name = listed[i]["key"]
p = getattr(self, name, [])
p.append(listed[i])
setattr(self, name, p)
f = DynamicAttributesFromDict(listdict)
pp(f.value)
pp(f.differentvalue)
pp(f.newValue)
filter(lambda x: x['key'] == 'value', my_data)
輸出一個生成器對象,該對象變成如下列表:
[{'key': 'value'}, {'key': 'value'}]
或者我們可以進行列表理解:
[d for d in my_data if d['key'] == 'value']
我正在重新閱讀您的問題,以確保我已正確回答,但不確定是否已回答。 讓我知道您是否正在尋找其他東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.