Будут клавиши Return Dict и значения в том же порядке? [дубликат]

Существует большая вероятность, что привилегии для выбора из таблицы1 были предоставлены роли, и роль была предоставлена ​​вам. Привилегии, предоставленные роли, недоступны для PL / SQL, написанного пользователем, даже если пользователю была предоставлена ​​роль.

Вы часто видите это для пользователей, которым предоставлена ​​роль dba для объектов, принадлежащих sys. Пользователь с ролью dba сможет, скажем, SELECT * from V$SESSION, но не сможет написать функцию, включающую SELECT * FROM V$SESSION.

Исправление заключается в предоставлении явных разрешений на рассматриваемый объект непосредственно пользователю, например, в случае выше, пользователь SYS должен GRANT SELECT ON V_$SESSION TO MyUser;

8
задан Community 23 May 2017 в 12:15
поделиться

3 ответа

Трудно улучшить документацию Python :

Ключи и значения перечислены в произвольном порядке, который не является случайным, зависит от реализаций Python и зависит от по истории вставок и удалений в словаре. Если items () , keys () , values ​​() , iteritems () , iterkeys () , и itervalues ​​() вызываются без каких-либо изменений в словаре, списки будут напрямую соответствовать. Это позволяет создавать пары (значение, ключ) с помощью zip (): pair = zip (d.values ​​(), d.keys ()). Такое же соотношение имеет место для методов iterkeys () и itervalues ​​() : пары = zip (d.itervalues ​​(), d. iterkeys ()) предоставляет одно и то же значение для пар. Другой способ создать тот же список: pair = [(v, k) for (k, v) в d.iteritems ()]

Короче говоря, «да» с оговоркой, что вы не должны измените словарь между вызовом keys () и вызовом values ​​() .

18
ответ дан 5 December 2019 в 08:25
поделиться

Да, они будут

Просто посмотрите документ в Python doc :

Перечислены ключи и значения в произвольном порядке, который не является случайным, зависит от реализаций Python и зависит от истории вставок и удалений словаря. Если items (), keys (), values ​​(), iteritems (), iterkeys () и itervalues ​​() вызываются без каких-либо промежуточных изменений в словаре, списки будут напрямую соответствовать.

Лучше всего по-прежнему использовать dict.items ()

1
ответ дан 5 December 2019 в 08:25
поделиться

Из документации Python 2.6:

Ключи и значения перечислены в произвольном порядке, который не является случайным, зависит от реализаций Python и зависит от истории вставок и удалений словаря. Если items () , keys () , values ​​() , iteritems () , iterkeys () , и itervalues ​​() вызываются без каких-либо промежуточных изменений в словаре, списки будут напрямую соответствовать. Это позволяет создавать пары (значение, ключ) с помощью zip (): pair = zip (d.values ​​(), d.keys ()) . Такое же соотношение имеет место для методов iterkeys () и itervalues ​​() : pair = zip (d.itervalues ​​(), d.iterkeys ()) обеспечивает одинаковое значение для пар. Другой способ создать тот же список: pair = [(v, k) for (k, v) в d.iteritems ()] .

Я более чем на 99% уверен, что то же самое будет верно для Python 3.0.

1
ответ дан 5 December 2019 в 08:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: