想了解python按什么顺序显示字典键?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于python按字典顺序输出的相关问题,此外,我们还将为您介绍关于MySQLJOIN按什么顺序进行评估?
想了解python按什么顺序显示字典键?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于python按字典顺序输出的相关问题,此外,我们还将为您介绍关于MySQL JOIN按什么顺序进行评估?、Python - 以相反的顺序显示文本文件的内容、python – mypy设置字典键/接口、python – 将String转换为多级字典键?的新知识。
本文目录一览:- python按什么顺序显示字典键?(python按字典顺序输出)
- MySQL JOIN按什么顺序进行评估?
- Python - 以相反的顺序显示文本文件的内容
- python – mypy设置字典键/接口
- python – 将String转换为多级字典键?
python按什么顺序显示字典键?(python按字典顺序输出)
D = {‘a’: 1, ‘b’: 2, ‘c’: 3}
>>> D
我只是在Python shell中进行了此操作,我想知道为什么键“ c”会在键“ b”之后???
答案1
小编典典顺序与它们内部的工作方式以及它们在哈希表中的顺序有关。这又取决于键的哈希值,键的插入顺序以及所使用的Python实现。
该顺序是任意的(但不是随机的),知道它将是哪个顺序将永远不会有用。
要获取排序的键列表,只需使用sorted(D)
,您将返回[''a'', ''b'', ''c'']
。
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;
我有以下问题:
- USING语法与ON语法同义吗?
- 这些联接是从左到右评估的吗?换句话说,此查询是否说:x =公司加入了用户;y = x JOIN工作;z = y加入用户帐户;
- 如果对问题2的回答为“是”,那么可以安全地假设“公司”表中包含“公司ID”,“用户ID”和“工作ID”列?
- 我不明白在引用别名“ j”时,如何使用WHERE子句来选择公司表上的行
任何帮助,将不胜感激!
答案1
小编典典USING(字段名)是表示table1.fieldname = table2.fieldname的简写方式。
SQL并未定义完成JOINS的“顺序”,因为这不是语言的本质。显然,必须在语句中指定一个顺序,但是INNER JOIN可以被认为是可交换的:您可以按任何顺序列出它们,您将获得相同的结果。
就是说,当构造一个SELECT … JOIN时,尤其是包括LEFT
JOIN的一个,我发现将第三个JOIN视为将新表与第一个JOIN的结果联接在一起,将第四个JOIN视为对联接的联接是有意义的。第二个JOIN的结果,依此类推。
由于它影响启发式的方式,指定顺序可能会影响查询优化器的行为。
否。查询的组装方式要求公司和用户都具有公司ID,Jobs具有用户ID和JobID,而useraccounts具有用户ID。但是,只有公司 或 用户之一需要用户名才能使JOIN起作用。
WHERE子句使用jobs表提供的列来过滤整个结果,即所有JOINed列。
Python - 以相反的顺序显示文本文件的内容
我们将以相反的顺序显示文本文件的内容。为此,我们首先创建一个包含以下内容的文本文件 amit.txt
通过切片以逆序显示文本文件的内容
示例
现在让我们以相反的顺序读取上述文件的内容 -
# 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设置字典键/接口
def f(d: dict) -> None: x = d["x"] print(x)
我可以指定此字典必须具有mypy的键“x”吗?我正在寻找类似于interface from typescript的东西,而不是将d改为类.
我不想将d更改为类的原因是因为我正在修改现有的大型代码库以添加mypy类型检查,并且此字典在很多地方使用.如果我必须将d [“x”]的所有实例更改为d.x,我将不得不修改很多代码.
解决方法
我知道你特别不想要这样做,但也许答案是考虑一个不同的数据结构,例如命名元组或数据类,您可以在其中指定类型具有的属性.
这就是typescript声明的作用,真的:
The
printLabel
function has a single parameter that requires that the object passed in has a property calledlabel
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转换为多级字典键?
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转换为多级字典键?的相关信息,请在本站查询。
本文标签: