Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 词汇和列表中的不同排序顺序_Python 2.7_Oracle11g - Fatal编程技术网

Python 2.7 词汇和列表中的不同排序顺序

Python 2.7 词汇和列表中的不同排序顺序,python-2.7,oracle11g,Python 2.7,Oracle11g,我必须从Oracle数据库中获取所有列名和类型,然后根据列类型执行不同的操作 我的代码是: for tab in table_list: tables = {}#tabel list table_types = {} #for each table dictionary column_name: type cur.execute("select column_name, data_type from all_tab_cols where owner = 'AAA' and


我必须从Oracle数据库中获取所有列名和类型,然后根据列类型执行不同的操作

我的代码是:

for tab in table_list:
    tables = {}#tabel list
    table_types = {} #for each table dictionary column_name: type
    cur.execute("select column_name, data_type from all_tab_cols where owner = 'AAA' and table_name = '"+tab+"' and hidden_column = 'NO' order by column_id asc")
    res = cur.fetchall()
    for type in res:
        table_types[type[0]] = type[1]
    tables[tab]=table_types

    print res
    print table_types
对于
res
我得到:

[('COAG_ID', 'NUMBER'), ('COAG_CONT_ID', 'NUMBER'), ('COAG_CONT_OPER_ID', 'NUMBER'), ('COAG_CAGT_ID', 'NUMBER'), etc...
对于
表格类型
我得到:

{'COAG_DELIVERY_PAYER': 'VARCHAR2', 'COAG_AGREEMENT_DATE': 'DATE', 'COAG_HANDSET_FULL_PRICE': 'NUMBER', etc...
我的问题是:为什么这些值的顺序不同? 表_类型中的值直接取自res,为什么它们的顺序不同

问候

Pawel

表格类型是字典,字典的存储或显示顺序与插入的顺序不同

字典的顺序与它们内部的工作方式以及它们在哈希表中的顺序有关。这又取决于键的散列值、插入顺序以及使用的Python实现


顺序是任意的(但不是随机的),知道它将是哪个顺序将永远不会有用。

表格类型是字典,字典不会以您插入的相同顺序存储或显示

字典的顺序与它们内部的工作方式以及它们在哈希表中的顺序有关。这又取决于键的散列值、插入顺序以及使用的Python实现


顺序是任意的(但不是随机的),知道它将是哪个顺序永远不会有用。

为了确保从Oracle数据库返回的值始终处于相同的顺序,请在代码中添加一个
order BY
子句,例如:
order BY column\u name
啊,是的,除非我突出显示它,否则它不会显示在我的屏幕上。我将不参与讨论,因为我对Python知之甚少。为了确保从Oracle数据库返回的值始终保持相同的顺序,请在代码中添加一个
orderby
子句,例如:
orderby column\u name
啊,是的,除非我突出显示它,否则它不会显示在我的屏幕上。我将不参与讨论,因为我对Python知之甚少。如果您希望以相同的顺序使用OrderedICT,如果您希望以相同的顺序使用OrderedICT