在 dict.items() 中检查成员资格的时间复杂度是多少?
根据文档:
键视图是类似设置的,因为它们的条目是唯一且可散列的。 如果所有值都是可散列的,因此 (key, value) 对是唯一且可 散列的,那么项目视图也是类似集合的。(值视图不被视为类集合,因为条目通常不是唯一的。)对于类集合视图,为抽象基类 collections.abc.Set 定义的所有操作都可用(例如,==、< , 或 ^)。
所以我用下面的代码做了一些测试:
from timeit import timeit
def membership(val, container):
val in container
r = range(100000)
s = set(r)
d = dict.fromkeys(r, 1)
d2 = {k: [1] for k in r}
items_list = list(d2.items())
print('set'.ljust(12), end='')
print(timeit(lambda: membership(-1, s), number=1000))
print('dict'.ljust(12), end='')
print(timeit(lambda: membership(-1, d), number=1000))
print('d_keys'.ljust(12), end='')
print(timeit(lambda: membership(-1, d.keys()), number=1000))
print('d_values'.ljust(12), end='')
print(timeit(lambda: membership(-1, d.values()), number=1000))
print('\n*With hashable dict.values')
print('d_items'.ljust(12), end='')
print(timeit(lambda: …Run Code Online (Sandbox Code Playgroud) x in data_structure在字典、列表和集合中检查成员资格 ( ) 的时间复杂度在此处列出:http :
//wiki.python.org/moin/TimeComplexity
但是,我在任何 Python 文档中都找不到元组的那个。我尝试了以下代码来检查自己:
import time
l = list(range(10000000))
t = tuple(range(10000000))
s = set(range(10000000))
start = time.perf_counter()
-1 in s
elapsed = time.perf_counter()
e = elapsed - start
print("Time spent in set is: ", e)
start = time.perf_counter()
-1 in l
elapsed = time.perf_counter()
e = elapsed - start
print("Time spent in list is: ", e)
start = time.perf_counter()
-1 in …Run Code Online (Sandbox Code Playgroud) 我正在使用 Spark Structured Streaming 从 Kafka 队列中读取数据。从卡夫卡我看完后正在申请filter的dataframe。我正在将此过滤后的数据框保存到镶木地板文件中。这会生成许多空的镶木地板文件。有什么办法可以停止写入空文件吗?
df = spark \
.readStream \
.format("kafka") \
.option("kafka.bootstrap.servers", KafkaServer) \
.option("subscribe", KafkaTopics) \
.load()
Transaction_DF = df.selectExpr("CAST(value AS STRING)")
decompDF = Transaction_DF.select(zip_extract("value").alias("decompress"))
filterDF = decomDF.filter(.....)
query = filterDF .writeStream \
.option("path", outputpath) \
.option("checkpointLocation", RawXMLCheckpoint) \
.start()
Run Code Online (Sandbox Code Playgroud) 我想遍历一个可迭代列表,但要求某些元素可以是 type None。
这可能看起来像这样:
none_list = [None, [0, 1]]
for x, y in none_list:
print("I'm not gonna print anything!")
Run Code Online (Sandbox Code Playgroud)
但是,这会提示TypeError: 'NoneType' object is not iterable.
目前,我发现了错误并在NoneType之后处理。对于我的用例,这会导致大量重复的代码,因为我基本上替换了这些None值并在 for 循环中执行与最初计划相同的操作。
try:
for x, y in none_list:
print("I'm not gonna print anything!")
except TypeError:
print("But I will!")
# Deal with NoneType here
Run Code Online (Sandbox Code Playgroud)
问题:
忽略初始循环中的值TypeError并检查None值的最佳方法是什么?
我在 Windows 10 上使用 Python 3.8.2。
我有以下代码:
x = range(5)
for i in x:
print(i)
del x
Run Code Online (Sandbox Code Playgroud)
预期输出:
0
Traceback (most recent call last):
File "C:\Users\Students\test.py", line 3, in <module>
for i in x:
NameError: name 'x' is not defined
Run Code Online (Sandbox Code Playgroud)
实际输出:
0
1
Traceback (most recent call last):
File "C:\Users\Students\test.py", line 5, in <module>
del x
NameError: name 'x' is not defined
Run Code Online (Sandbox Code Playgroud)
在第一次迭代中,我期望del x会删除,x以便在第二次迭代中它会给我行错误,for i in x:.
然而,它不断迭代,打印出1,然后给我错误提示,del x。
看起来它对任何可迭代对象的工作方式都是相同的。我用字典、集合、元组和列表进行了测试。 …
我不知道该怎么办,因为我无法附加元组,我只是将它显示为默认列表
Dict = dict()
def convert(list_tup):
for a,b,c in list_tup:
letters = a,b
number = c
Dict.setdefault(number,[]).append(letters)
# I only want a multiple tuple values not list of tuple
return Dict
strings = [('w', 'x','2'), ('y', 'z', '3')]
print(convert(strings))
Run Code Online (Sandbox Code Playgroud)
它打印 {'2': [('w', 'x')], '3': [('y', 'z')]}
如何在一个键中添加多个元组作为值?
我希望我的输出是这样的:
{'2': ('w', 'x'), '3': ('y', 'z')}
Run Code Online (Sandbox Code Playgroud) 我正在根据用户输入创建一个正整数列表。该列表将有 5 个值。在负输入的情况下,该值不会进入列表并发出错误消息并再次询问该数字。我的代码遇到的问题是循环在执行 5 次后下降。然而,我希望它继续运行,直到我得到 5 个正数。
lists = []
for i in range(5):
s = int(input('Enter a number: '))
if s >= 0:
lists.append(s)
else:
print("Enter a valid number")
print(lists)
Run Code Online (Sandbox Code Playgroud) python ×6
python-3.x ×4
apache-spark ×1
del ×1
dictionary ×1
for-loop ×1
iterable ×1
loops ×1
membership ×1
nonetype ×1
pyspark ×1
reference ×1
try-except ×1
tuples ×1
typeerror ×1