首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Frozenset检索元素/Frozenset的替代品

从Frozenset检索元素/Frozenset的替代品
EN

Stack Overflow用户
提问于 2018-01-28 21:16:55
回答 1查看 5.2K关注 0票数 1

我有一个冷冻输出,如下所示:

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

双打:

项目信心

关于三元组:

项目信心

双打:

代码语言:javascript
复制
[(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)]

三倍:

代码语言:javascript
复制
[(frozenset({'DAI22896'}), frozenset({'GRO73461', 'ELE17451'}), 0.8), (frozenset({'GRO73461'}), 
  frozenset({'ELE17451', 'DAI22896'}), 0.8), (frozenset({'ELE17451'}), frozenset({'GRO73461', 'DAI22896'}), 0.3076923076923077)]

我只是想知道是否有可能检索该元素,以便输出采用以下格式:

代码语言:javascript
复制
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

如果没有任何替代使用冷冻机将是有帮助的。

感谢您的阅读

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-28 23:59:44

对于你的“双”集,它们中有一个值。您可以通过几种不同的方式检索第一个值(也是唯一的)值:

代码语言:javascript
复制
>>> s = frozenset({'GRO73461'})

元组拆包:

代码语言:javascript
复制
>>> value, = s
>>> value
'GRO73461'

转换为列表,然后接受第一个索引:

代码语言:javascript
复制
>>> list(s)[0]
'GRO73461'

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

代码语言:javascript
复制
>>> next(iter(s))
'GRO73461'

next中使用生成器表达式

代码语言:javascript
复制
>>> next(value for value in s)
'GRO73461'

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

代码语言:javascript
复制
>>> double = (frozenset({'GRO73461'}), frozenset({'ELE17451'}), 1.0)

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

代码语言:javascript
复制
>>> (first,), (second,), third = double
>>> first, second, third
'GRO73461', 'ELE17451', 1.0

要格式化双值,可以使用格式字符串

代码语言:javascript
复制
>>> double_format = '{} {} {:0.4f}'
>>> double_format.format(first, second, third)
'GRO73461 ELE17451 1.0000'

共:

代码语言:javascript
复制
>>> 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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48491412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档