gpt4 book ai didi

python - 在 dict 中操作字段和值并在 Python 中转换为元组

转载 作者:太空宇宙 更新时间:2023-11-04 05:29:39 25 4
gpt4 key购买 nike

我有一个看起来像的字典

{'2016-05-30':{
'go':((1, 2, 3, 4),),
'stop':((5, 6, 7, 8),)},
'2016-05-31': {
'go':((11, 12, 13, 14),),
'stop':((15, 16, 17, 18),)}}

我有一个状态列表:['state1', 'state2', 'state3', 'state4']

我正在尝试获得类似于 (state, date, value)

的输出

我可以通过运行一堆 for 循环来做到这一点:

some_list=[]
state = ['state1', 'state2', 'state3', 'state4']
data = {'2016-05-30':{
'go':((1, 2, 3, 4),),
'stop':((5, 6, 7, 8),)},
'2016-05-31': {
'go':((11, 12, 13, 14),),
'stop':((15, 16, 17, 18),)}}
for d in data:
for vals in data.values():
for val in vals.get('go'):
if val:
for k,v in zip(state, val):
some_list.append((k, d, v))

这是非常蛮力的,我想知道是否有更聪明的方式/pythonic 方式来做到这一点

编辑:好的,现在使用实际值而不是假值(大部分)。应该更清楚。代码应该能够被复制粘贴

最佳答案

这是我认为你想要的,使用列表理解,

some_list = [[s, d, v] for d in data for vals in data[d]['go'] for s, v in zip(state, vals)]

# [['state1', '2016-05-31', 11],
# ['state2', '2016-05-31', 12],
# ['state3', '2016-05-31', 13],
# ['state4', '2016-05-31', 14],
# ['state1', '2016-05-30', 1],
# ['state2', '2016-05-30', 2],
# ['state3', '2016-05-30', 3],
# ['state4', '2016-05-30', 4]]

如果“go”字段并不总是存在,您可以使用

[[s, d, v] for d in data for f in data[d] for vals in data[d][f] for s, v in zip(state, vals) if f == 'go']

关于python - 在 dict 中操作字段和值并在 Python 中转换为元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555677/

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