gpt4 book ai didi

algorithm - 将字典列表转换为命名元组列表的 Pythonic 方法

转载 作者:太空狗 更新时间:2023-10-29 21:25:01 25 4
gpt4 key购买 nike

我有一个 listdict。需要将其转换为 namedtuple(首选)或简单 tuplelist,同时用空格拆分第一个变量。

什么是更 pythonic 的方式来做到这一点?

我稍微简化了我的代码。欢迎使用理解、gen 表达式和 itertools。

数据输入:

dl = [{'a': '1 2 3',
'd': '*',
'n': 'first'},
{'a': '4 5',
'd': '*', 'n':
'second'},
{'a': '6',
'd': '*',
'n': 'third'},
{'a': '7 8 9 10',
'd': '*',
'n': 'forth'}]

简单算法:

from collections import namedtuple

some = namedtuple('some', ['a', 'd', 'n'])

items = []
for m in dl:
a, d, n = m.values()
a = a.split()
items.append(some(a, d, n))

输出:

[some(a=['1', '2', '3'], d='*', n='first'),
some(a=['4', '5'], d='*', n='second'),
some(a=['6'], d='*', n='third'),
some(a=['7', '8', '9', '10'], d='*', n='forth')]

最佳答案

下面,@Petr Viktorin 指出了我的原始答案和您的初始解决方案的问题:

WARNING! The values() of a dictionary are not in any particular order! If this solution works, and a, d, n are really returned in that order, it's just a coincidence. If you use a different version of Python or create the dicts in a different way, it might break.

(我有点惭愧,我一开始没有选择它,并为此获得了 45 个代表!)

改用@eryksun 的建议:

items =  [some(m['a'].split(), m['d'], m['n']) for m in dl]

我原来的错误答案。除非您有 OrderedDict 列表,否则不要使用它。

items =  [some(a.split(), d, n) for a,d,n in (m.values() for m in dl)]

关于algorithm - 将字典列表转换为命名元组列表的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com