دع قائمة المناطق تكون بنية بيانات مثل هذا:
[{'zones': ['pe.com', 'ps.de', 'p-s.de'], 'file': 'gm'},
{'zones': ['p-e.net', 'ps.net', 'p-s.net'], 'file': 'grpc'}]
عند استخدام zonelist | map (السمة = 'file') ، يتم إرجاع سلسلة مثل هذه:
<generator object do_map at 0x10bd730>
سيكون السلوك المتوقع هو إرجاع قائمة تحتوي على سمات "ملف" لقائمة المنطقة.
كما اتضح ، هناك حل بديل: استخدام ، على سبيل المثال ، zonelist | خريطة (سمة = 'ملف') | قائمة أو | فرز سينتج في القائمة المتوقعة:
[gm, grpc]
أنا أستخدم Jinja 2.7.1 مع Ansible 1.4.3.
هذا ليس حشرة. هل تحاول إخراج JSON؟
نعم ، كان توقعي أن تعرض الخريطة () قائمة. وهذا ليس حشرة؟ هذا يعني أن الخريطة () يجب أن تستخدم فقط كدالة وسيطة مع بعض عوامل التصفية الأخرى مثل | الانضمام أو | القائمة الملحقة بها؟ أمم. ربما ينبغي أن يذكر ذلك صراحة في الوثائق.
لا يجب عليك فقط طباعة repr
من كائنات Python العشوائية لتغذيتها مباشرة في Javascript. في حالتك يبدو أنك محظوظ ، اعتمادًا على المحتوى ، ومع ذلك ، قد تحصل في الواقع على JSON غير صالح ، وقد يكون أيضًا عيبًا أمنيًا كبيرًا. قم بإلحاق المرشحات list
و tojson
للحصول على JSON صالح ، أو استثناء عندما يكون الكائن غير قابل للترميز إلى JSON.
حقيقة أن repr
لمعظم بايثون المبنية هي JSON-ish ليست مصادفة ، لكن النسخ ليس شيئًا يجب على المرء الاعتماد عليه لمنطق البرنامج الفعلي.
أيضًا ، لا أرى أي مكان في مستندات Jinja مما يعني أن map
سيعيد أي شيء أكثر تحديدًا من التسلسل.
لا أريد تغيير هذا لأن هذا قد يتسبب في أداء هذه الوظائف لأسفل والتي عادة ما تستخدم فقط مع التكرار. |list
يصلحه.
لم أكن أعرف عن الحل {{ ... | list }}
لمشكلة ansbile <generator object do_map at 0xdeadbeef>
.
شكرا لتقديم هذا!
التعليق الأكثر فائدة
لا أريد تغيير هذا لأن هذا قد يتسبب في أداء هذه الوظائف لأسفل والتي عادة ما تستخدم فقط مع التكرار.
|list
يصلحه.