【问题标题】:Iterating over values that inside multiple lists which is part of a dictionary迭代作为字典一部分的多个列表内的值
【发布时间】:2020-08-04 02:03:18
【问题描述】:

我的字典是这样的

proj_d = {
    'key_A:': [u'1361808,1359404,1357929'],
    'key_B:': [u'1361808,1359404,1357929'],
    'Key_C:': [u'1361808,1359404,1357929'],
    'Key_D:': [u'1361808,1359404,1357929']
}

这是方法的返回格式。

我被阻止的区域是迭代每个列表中的项目,因为无法使用索引值和键字符串访问列表。

在打开列表中的项目时需要帮助。

我正在使用 python 2.7(如果需要我可以切换到 python 3.7)

【问题讨论】:

  • 查看keys()items()dict 上的一些方法。
  • 我试过了,包括iteritems()iterkeys()。仍然无法解压值
  • 正如@gold_cy 下面所说,您的列表使用单个字符串作为值。

标签: python python-2.7 dictionary iteration key-value


【解决方案1】:

列表中的项目是字符串,这就是为什么您需要先使用split 将它们分开。你还提到你可以切换到 Python3.7,我建议你这样做,因为 Python2.7 早在一月份就已经结束了。

for k, v in proj_d.items():
    print(f"Currently inside key {k}")
    for val in v[0].split(','):
        print(f"Currently at value {val}")

Currently inside key key_A:
Currently at value 1361808
Currently at value 1359404
Currently at value 1357929
Currently inside key key_B:
Currently at value 1361808
Currently at value 1359404
Currently at value 1357929
Currently inside key Key_C:
Currently at value 1361808
Currently at value 1359404
Currently at value 1357929
Currently inside key Key_D:
Currently at value 1361808
Currently at value 1359404
Currently at value 1357929

为了使其更通用,您的列表可以包含多个字符串,请将其更改为以下内容。

from itertools import chain

for k, v in proj_d.items():
    print(f"Currently inside key {k}")
    vals = (item.split(',') for item in v)
    for val in chain.from_iterable(vals):
        print(f"Currently at value {val}")

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多