python – 迭代值列表的字典

python – 迭代值列表的字典,第1张

概述我有这样的字典 data = { 'a': [95, 93, 90], 'b': [643, 611, 610]} 我想迭代dict并从每个项的值列表中获取键和值,类似这样 {'a': 95, 'b': 643}{'a': 93, 'b': 611}{'a': 90, 'b': 610} 我已经为此实现了逻辑并且它工作正常,但是当我看到在进程中创建的temp_dict时,我看 我有这样的字典

data = {    'a': [95,93,90],'b': [643,611,610]}

我想迭代dict并从每个项的值列表中获取键和值,类似这样

{'a': 95,'b': 643}{'a': 93,'b': 611}{'a': 90,'b': 610}

我已经为此实现了逻辑并且它工作正常,但是当我看到在进程中创建的temp_dict时,我看到许多中间不必要的循环.最终的结果很好,但我认为它可以改进很多.

import timeitdata = {    'a': [95,610]}def calculate(**kwargs):    temp_dict = {}    index = 0    len_values = List(kwargs.values())[0]    while index < len(len_values):        for k,v in kwargs.items():            temp_dict[k] = v[index]        index += 1        yIEld temp_dictstart_time = timeit.default_timer()for k in (calculate(**data)):    print(k)print(timeit.default_timer() - start_time)

如何更有效地做到这一点?

解决方法 尝试这样的事情 –

>>> data = {...     'a': [95,...     'b': [643,610]... }>>> lst = List(data.items())>>> lst1 = List(zip(*[i[1] for i in lst]))>>> lst1[(95,643),(93,611),(90,610)]>>> newList = []>>> for aval,bval in lst1:...     newList.append({lst[0][0]:aval,lst[1][0]:bval})...>>> newList[{'a': 95,'b': 643},{'a': 93,'b': 611},{'a': 90,'b': 610}]

当使用*作为参数将列表传递给函数时,它会将列表分解为单个元素并将其传递给函数.示例 – 如果我们传递[[1,2],[3,4]]它将作为两个不同的参数传递 – [1,2]和[3,4] – 检查此here(部分 – 函数调用中的*)

举例解释一下 –

>>> lst = [[1,2,3],[4,5,6],[7,8,9]]>>> def func(a,b,c):...     print(a)...     print(b)...     print(c)...>>> func(*lst)[1,3][4,6][7,9]

zip – 此函数返回元组列表,其中第i个元组包含来自每个参数序列或迭代的第i个元素.

更具规模的模型 –

>>> lst = List(data.items())>>> lst[('a',[95,90]),('b',[643,610])]>>> lst1 = List(zip(*[i[1] for i in lst]))>>> lst1[(95,610)]>>> newList = []>>> for x in lst1:...     d = {}...     for i,y in enumerate(lst):...             d[y[0]] = x[i]...     newList.append(d)...>>> newList[{'a': 95,'b': 610}]
总结

以上是内存溢出为你收集整理的python – 迭代值列表的字典全部内容,希望文章能够帮你解决python – 迭代值列表的字典所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1195235.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存