从冻结集检索元素/冻结的替代项

2024-10-03 09:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我的冻结集输出如下所示:

下面的数据只是一个例子。总的来说,我希望数据采用以下格式:

双打:

项目项目信心

对于三胞胎:

项目项目信心

双打:

[(frozenset({'GRO73461'}), frozenset({'ELE17451'}), 1.0), (frozenset({'ELE26917'}), frozenset({'GRO99222'}), 1.0), 
 (frozenset({'SNA80192'}), frozenset({'ELE17451'}), 1.0), (frozenset({'DAI22896'}), frozenset({'ELE17451'}), 0.9), 
 (frozenset({'GRO99222'}), frozenset({'ELE17451'}), 0.8125)]

三倍:

^{pr2}$

我只是想知道是否可以检索元素以便输出为以下格式:

OUTPUT A
FRO11987 FRO12685 0.4325
FRO11987 ELE11375 0.4225
FRO11987 GRO94758 0.4125
FRO11987 SNA80192 0.4025
FRO11987 FRO18919 0.4015
OUTPUT B
FRO11987 FRO12685 DAI95741 0.4325
FRO11987 ELE11375 GRO73461 0.4225
FRO11987 GRO94758 ELE26917 0.4125
FRO11987 SNA80192 ELE28189 0.4025
FRO11987 FRO18919 GRO68850 0.4015

如果没有其他选择,使用冷冻集将是有帮助的。在

谢谢你的阅读


Tags: 数据项目output格式frozenset信心fro11987ele26917
1条回答
网友
1楼 · 发布于 2024-10-03 09:16:18

对于“double”,您有一个包含单个值的集合。可以通过几种不同的方法检索第一个(也是唯一一个)值:

>>> s = frozenset({'GRO73461'})

元组解包:

^{pr2}$

转换为列表,然后获取第一个索引:

>>> list(s)[0]
'GRO73461'

创建一个迭代器,然后取next值:

>>> next(iter(s))
'GRO73461'

next使用生成器表达式:

>>> next(value for value in s)
'GRO73461'

您有一个表示双精度的元组列表:

>>> double = (frozenset({'GRO73461'}), frozenset({'ELE17451'}), 1.0)

使用我向您展示的第一个元组解包方法,您可以将这些值解压到一个表达式中:

>>> (first,), (second,), third = double
>>> first, second, third
'GRO73461', 'ELE17451', 1.0

要格式化双精度值,可以使用format string

>>> double_format = '{} {} {:0.4f}'
>>> double_format.format(first, second, third)
'GRO73461 ELE17451 1.0000'

总共:

>>> doubles = [
...     (frozenset({'GRO73461'}), frozenset({'ELE17451'}), 1.0), 
...     (frozenset({'ELE26917'}), frozenset({'GRO99222'}), 1.0),
...     (frozenset({'SNA80192'}), frozenset({'ELE17451'}), 1.0), 
...     (frozenset({'DAI22896'}), frozenset({'ELE17451'}), 0.9),
...     (frozenset({'GRO99222'}), frozenset({'ELE17451'}), 0.8125)
... ]
>>> for double in doubles:
...     (first,), (second,), third = double
...     print double_format.format(first, second, third)
GRO73461 ELE17451 1.0000
ELE26917 GRO99222 1.0000
SNA80192 ELE17451 1.0000
DAI22896 ELE17451 0.9000
GRO99222 ELE17451 0.8125

相关问题 更多 >