如何仅在 OrderedDict 的每个键中提取第二个值元素?
How to extract second values elements only in every keys in an OrderedDict?
所以,我有这段代码,我只想提取 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 )
好的,这里有一些技巧:
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)
连接字符串,以逗号分隔。
要在不使用显式循环的情况下做到这一点(我会说只是将 for
放在列表理解语法中仍然使用 for 循环),您可以使用 map
来只获得第二个值作为列表返回,然后将这些值与 ','.join()
一起打印出来:
>>> ','.join(map(lambda x: str(x[1]), regDict.values()))
'200,20'
map
调用使用 lambda 函数 return 每个原始值的第二个值 ([1]
):
>>> list(map(lambda x: str(x[1]), regDict.values()))
['200', '20']
使用此列表作为参数调用 ','.join()
会返回一个连接的字符串,每个值由 ,
分隔。
所以,我有这段代码,我只想提取 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 )
好的,这里有一些技巧:
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)
连接字符串,以逗号分隔。
要在不使用显式循环的情况下做到这一点(我会说只是将 for
放在列表理解语法中仍然使用 for 循环),您可以使用 map
来只获得第二个值作为列表返回,然后将这些值与 ','.join()
一起打印出来:
>>> ','.join(map(lambda x: str(x[1]), regDict.values()))
'200,20'
map
调用使用 lambda 函数 return 每个原始值的第二个值 ([1]
):
>>> list(map(lambda x: str(x[1]), regDict.values()))
['200', '20']
使用此列表作为参数调用 ','.join()
会返回一个连接的字符串,每个值由 ,
分隔。