GVKun编程网logo

python按什么顺序显示字典键?(python按字典顺序输出)

15

想了解python按什么顺序显示字典键?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于python按字典顺序输出的相关问题,此外,我们还将为您介绍关于MySQLJOIN按什么顺序进行评估?

想了解python按什么顺序显示字典键?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于python按字典顺序输出的相关问题,此外,我们还将为您介绍关于MySQL JOIN按什么顺序进行评估?、Python - 以相反的顺序显示文本文件的内容、python – mypy设置字典键/接口、python – 将String转换为多级字典键?的新知识。

本文目录一览:

python按什么顺序显示字典键?(python按字典顺序输出)

python按什么顺序显示字典键?(python按字典顺序输出)

D = {‘a’: 1, ‘b’: 2, ‘c’: 3}
>>> D

我只是在Python shell中进行了此操作,我想知道为什么键“ c”会在键“ b”之后???

答案1

小编典典

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

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

要获取排序的键列表,只需使用sorted(D),您将返回[''a'', ''b'', ''c'']

MySQL JOIN按什么顺序进行评估?

MySQL JOIN按什么顺序进行评估?

我有以下查询:

SELECT c.*FROM companies AS cJOIN users AS u USING(companyid)JOIN jobs AS j USING(userid)JOIN useraccounts AS us USING(userid)WHERE j.jobid = 123;

我有以下问题:

  1. USING语法与ON语法同义吗?
  2. 这些联接是从左到右评估的吗?换句话说,此查询是否说:x =公司加入了用户;y = x JOIN工作;z = y加入用户帐户;
  3. 如果对问题2的回答为“是”,那么可以安全地假设“公司”表中包含“公司ID”,“用户ID”和“工作ID”列?
  4. 我不明白在引用别名“ j”时,如何使用WHERE子句来选择公司表上的行

任何帮助,将不胜感激!

答案1

小编典典
  1. USING(字段名)是表示table1.fieldname = table2.fieldname的简写方式。

  2. SQL并未定义完成JOINS的“顺序”,因为这不是语言的本质。显然,必须在语句中指定一个顺序,但是INNER JOIN可以被认为是可交换的:您可以按任何顺序列出它们,您将获得相同的结果。

就是说,当构造一个SELECT … JOIN时,尤其是包括LEFT
JOIN的一个,我发现将第三个JOIN视为将新表与第一个JOIN的结果联接在一起,将第四个JOIN视为对联接的联接是有意义的。第二个JOIN的结果,依此类推。

由于它影响启发式的方式,指定顺序可能会影响查询优化器的行为。

  1. 否。查询的组装方式要求公司和用户都具有公司ID,Jobs具有用户ID和JobID,而useraccounts具有用户ID。但是,只有公司 用户之一需要用户名才能使JOIN起作用。

  2. WHERE子句使用jobs表提供的列来过滤整个结果,即所有JOINed列。

Python - 以相反的顺序显示文本文件的内容

Python - 以相反的顺序显示文本文件的内容

我们将以相反的顺序显示文本文件的内容。为此,我们首先创建一个包含以下内容的文本文件 amit.txt

Python - 以相反的顺序显示文本文件的内容

通过切片以逆序显示文本文件的内容

示例

现在让我们以相反的顺序读取上述文件的内容 -

# The file to be read
with open("amit.txt", "r") as myfile:
   my_data = myfile.read()

# Reversing the data by passing -1 for [start: end: step]
rev_data = my_data[::-1]

# Displaying the reversed data
print("Reversed data = ",rev_data)
登录后复制

输出

Reversed data = !tisisihT
登录后复制
登录后复制

通过循环逆序显示文本文件的内容

示例

# Opening the file to read
my_data = open(''amit.txt'',''r'')

# reversing the data
for myLine in my_data:
   l = len(myLine)
   rev_data = ''''

while(l>=1):
   rev_data = rev_data + myLine[l-1]
   l=l-1
print("Reversed data = ",rev_data) # Displaying the reversed data
登录后复制

输出

Reversed data = !tisisihT
登录后复制
登录后复制

以上就是Python - 以相反的顺序显示文本文件的内容的详细内容,更多请关注php中文网其它相关文章!

python – mypy设置字典键/接口

python – mypy设置字典键/接口

假设我有一个将字典作为参数的函数:

def f(d: dict) -> None:
    x = d["x"]
    print(x)

我可以指定此字典必须具有mypy的键“x”吗?我正在寻找类似于interface from typescript的东西,而不是将d改为类.

我不想将d更改为类的原因是因为我正在修改现有的大型代码库以添加mypy类型检查,并且此字典在很多地方使用.如果我必须将d [“x”]的所有实例更改为d.x,我将不得不修改很多代码.

解决方法

不,通过键入(PEP 484和PEP 526),您无法声明特定键将出现在容器中.您可以声明的只是类型,而不是运行时内容. ‘x’是特定的字符串值,而不是类型.

我知道你特别不想要这样做,但也许答案是考虑一个不同的数据结构,例如命名元组或数据类,您可以在其中指定类型具有的属性.

这就是typescript声明的作用,真的:

The printLabel function has a single parameter that requires that the object passed in has a property called label of type string.

Python属性是Typescript对象属性的道德等价物.那些Typescript对象符号和Python词典有很多共同之处可能会让人感到困惑,但是在尝试将概念映射到Python时,不应该将Typescript对象声明视为除了类之外的任何东西.

mypy确实包含了不属于Python类型提示标准的输入扩展.这包括mypy_extensions.TypeDict object,其工作方式与typing.TypeVar declaration非常相似:

from mypy_extensions import TypedDict

SomeDict = TypeDict('SomeDict',{'x': str})

def f(d: SomeDict) -> None:
    x = d['x']
    print(x)

或使用基于类的语法:

class SomeDict(TypeDict)
    x: str

TypeDict声明中的键要么全部都需要,要么全部是可选的(当你在声明中设置total = False时);你必须使用继承来生成一些带有可选键的类型,请参阅链接的文档.

但请注意,TypeDict是实验性的,可以在将来的mypy版本中再次删除或大幅改变,并且在其他Python类型提示检查器中不可用.

python – 将String转换为多级字典键?

python – 将String转换为多级字典键?

我让用户能够检查多级字典中的特定键.我的想法是他们会像这样将路径传递给密钥:

root.subelement1.subelement2.key

这可以是任意长度和深度.

一旦我有了用户的字符串(上面),我将拆分它并获得每个组件的列表:

elements = ['root','subelement1','subelement2','key']

所有这些我都能做到.接下来的部分是我被困住的地方.当它是任意长度时,如何查询由上面指定的字典键?

我最初的想法是做一些像my_dict [elements [0]] [elements [1]] ……但是当我的用户没有准确传递我期望的长度时,这不会扩展或工作.

在这种情况下,如何以任意键深度获取数据?

几个例子:

>用户通过country.US.NewYork =>我查询`my_dict [‘country’] [‘US’] [‘NewYork’]
>用户通过department.accounting =>我查询my_dict [‘department’] [‘accounting’]
>用户通过id =>我查询my_dict [‘id’]
>用户通过district.district15.HenryBristow.principal =>我查询my_dict [‘district’] [‘district15’] [‘HenryBristow’] [‘principal’]

解决方法

你可以使用 reduce来查询嵌套词典中的键:

q = "district.district15.HenryBristow.principal"
my_dict  = {"district" : {"district15" : {"HenryBristow" : {"principal" : 12}}}}

from functools import reduce  # python 3 only

print(reduce(lambda x,y : x[y],q.split("."),my_dict))

结果:

12

如果您想避免在此路径中不存在数据的情况下捕获KeyError,则可以使用带有默认值的get作为空字典:

reduce(lambda x,y : x.get(y,{}),my_dict)

尝试获取未知值会返回一个空字典.唯一的缺点是你不知道路径到底在哪里丢失,所以也许保留KeyError不会那么糟糕:

try:
    v = reduce(lambda x,my_dict)
except KeyError as e:
    print("Missing key: {} in path {}".format(e,q))
    v = None

我们今天的关于python按什么顺序显示字典键?python按字典顺序输出的分享已经告一段落,感谢您的关注,如果您想了解更多关于MySQL JOIN按什么顺序进行评估?、Python - 以相反的顺序显示文本文件的内容、python – mypy设置字典键/接口、python – 将String转换为多级字典键?的相关信息,请在本站查询。

本文标签: