基于关系系数构建嵌套字典

2024-05-28 23:30:16 发布

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

我有3个变量,a,b和c,还有3个系数a,b,c和c。我想用它们来构建一个嵌套字典rels,它将是以下内容:

   a   b    c
a  1   a_b  a_c
b a_b  1    b_c
c a_c  b_c   1

例如:

rels['a']['b']=a_b
rels['b']['c']=b_c
rels['a']['a']=1

等等

显然,我可以通过硬编码来实现:

rels = {}
rels['a']={{'a':1,'b':a_b,'c':a_c}}

等等。我想知道有没有更优雅/有效的方法


Tags: 方法编码字典rels系数
2条回答

您可以拆分数据并使用字典:

import re
s = """
   a   b    c
 a  1   a_b  a_c
 b a_b  1    b_c
 c a_c  b_c   1
"""
new_s = [list(filter(None, re.split('\s+', i))) for i in filter(None, s.split('\n'))] 
new_data = {a:dict(zip(new_s[0], b)) for a, *b in new_s[1:]}

输出:

{'a': {'a': '1', 'b': 'a_b', 'c': 'a_c'}, 'b': {'a': 'a_b', 'b': '1', 'c': 'b_c'}, 'c': {'a': 'a_c', 'b': 'b_c', 'c': '1'}}

您可以遍历您的列表,对于列表中的每个项目,您可以找到该项目(或每个变量)与列表中所有变量的关系,并将它们存储在另一个列表中 简单地说- `你知道吗

var = ['a','b','c']
rels = {}
for item in var:
    rel = {}
    for i in range(0,len(var)):
       if(item == var[i]): 
           rel[item] = 1
       else:
           rel[item] = item+"_"+var[i]
    rels[item] = rel

相关问题 更多 >

    热门问题