0

所以,我有这段代码,我只想在 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 )
4

2 回答 2

1

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

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

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

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

将此列表作为参数调用','.join()会为您提供一个串联的字符串,每个值用 . 分隔,

于 2020-11-11T13:10:38.790 回答
0

好的,这里有一些技巧:

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()]to do 列表理解,它只接受第二个数字 (the [1]) 并将其转换为字符串 (the str)。

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

于 2020-11-11T13:04:21.247 回答