في Python ، كيف يمكنني إزالة بيانات معينة من القائمة لإنشاء واحدة جديدة؟

0

أنا أسحب البيانات من نقطة نهاية json ، والتي تُرجع قائمة.

بعض العناصر في هذه القائمة ، أريد التخلص منها. أنا مهتم فقط بعناصر معينة.

أقوم بسحب البيانات على هذا النحو:

# Pull the data
url = "https://my-endpoint.com"
user = 'user1'
pwd = 'password1'
response = requests.get(url, auth=(user, pwd))
data = json.loads(response.text)

تبدو الحمولة مشابهة لـ:

[{
        "apples": {
            "value": 0.0
        },
        "oranges": {
            "value": 0.0
        },
        "name": "testing123"
    },
    {
        "apples": {
            "value": 0.0
        },
        "oranges": {
            "value": 0.0
        },
        "name": "foobar"
    },
    {
        "apples": {
            "value": 0.0
        },
        "oranges": {
            "value": 0.0
        },
        "name": "testing456"
    }]

افترض أن ما سبق يستمر مع العديد من العناصر الأخرى ، ولكن باسم مختلف. كيف يمكنني سحب جميع البيانات ، ولكن استبعاد ما أريد؟

من المثال أعلاه ، أود سحب جميع البيانات لأسماء "اختبار 123" و "اختبار 456" ، ولكن مع استبعاد البيانات من "foobar".

القائمة الجديدة هي ما سأكررها لسحب البيانات التي أحتاجها لأغراضي.

1 إجابة

1
افضل جواب

هناك قدر كبير من الأقواس غير المتطابقة في سؤالك ، ولكن أعتقد أنني اكتشفتها. لديك 3 (+ العديد من القواميس) في قائمة ، لكل منها التفاح الخاص بها ، والبرتقال (أو مفاتيح أخرى) ، ثم name مفتاح. تريد قائمة قواميس بنفس البنية مثل هذا ، فقط القواميس حيث name in set_of_preapproved_names . من أجل الإيجاز ، سأفترض أن لديك قائمة أسماء تسمى OK_NAMES :

new_data = [Dict for Dict in data if Dict ["name"] in OK_NAMES]

ها أنت ذا!

إذا أردت بدلاً من ذلك حذف جميع الأسماء بنمط معين:

new_data = [Dict for Dict in data if not Dict ["name"].startswith ("foobar")]

التي يجب أن تعمل


ولكني أعلم أنه ليس من الجيد أبدًا تسمية المتغيرات بعد نوع ما ، فقد كنت أفعلها للتو للتوضيح هنا.

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام