【问题标题】:How to extract second values elements only in every keys in an OrderedDict?如何仅在 OrderedDict 中的每个键中提取第二个值元素?
【发布时间】:2021-02-23 10:04:56
【问题描述】:

所以,我有这段代码,我想只在 OrderedDict 中的每个键中提取第二个值元素,我不想使用 for 循环,对此有什么想法吗?

from collections import OrderedDict

regDict= OrderedDict()
regDict["glenn"] = (100,200)
regDict["elena"] = (10,20)
print("values",list(regDict.values())[0][1])
print("values",list(regDict.values())[1][1])

打印:

values 200
values 20

目标输出:

values 200,20    # or values ( 200,20 )

【问题讨论】:

  • 嗨,欢迎来到 StackOverflow。您可以通过 list comprehension 来做到这一点,这会将所需的值放入一个列表中。
  • 在列表理解中完成,compre=[val for val in regDict.values()] 返回:compre [(100, 200), (10, 20)],我如何分割这两个项目在最后一个元素中

标签: python ordereddict


【解决方案1】:

要在不使用显式循环的情况下执行此操作(我想说只是将 for 放在列表理解语法中仍然会使用 for 循环),您可以使用 map 仅将第二个值作为列表,然后将这些值与','.join() 一起打印出来:

>>> ','.join(map(lambda x: str(x[1]), regDict.values()))
'200,20'

map 调用使用 lambda 函数返回每个原始值的第二个值 ([1]):

>>> list(map(lambda x: str(x[1]), regDict.values()))
['200', '20']

使用此列表作为参数调用 ','.join() 会返回一个串联字符串,其中每个值由 , 分隔。

【讨论】:

  • 这可以节省我的时间!
【解决方案2】:

好的,这里有一些技巧:

from collections import OrderedDict
regDict= OrderedDict()
regDict["glenn"] = (100,200)
regDict["elena"] = (10,20)
print("values",list(regDict.values())[0][1])
print("values",list(regDict.values())[1][1])
second_vals = [str(val[1]) for val in regDict.values()] # Creates a list ['200', '20']
second_vals_as_str = ", ".join(second_vals)
print (f'values: {second_vals_as_str}') # Prints <values: 200, 20>

您需要[str(val[1]) for val in regDict.values()] 来执行列表理解,它只接受第二个数字([1])并将其转换为字符串(str)。

", ".join(second_vals) 连接字符串,用逗号分隔。

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2018-11-02
    相关资源
    最近更新 更多