【问题标题】:How to name list of lists in Python?如何在 Python 中命名列表列表?
【发布时间】:2016-07-25 10:17:43
【问题描述】:

我有以下列表:

sims1 = [[(2, 0.90452874), (1, 0.83522302), (4, 0.77591574), (0, 0.72705799), (3, 0.52282226)],
         [(3, 0.79298556), (1, 0.78112978), (2, 0.76006395), (0, 0.58570701), (4, 0.40093967)],
         [(2, 0.9549554),  (1, 0.71705657), (0, 0.58731651), (3, 0.43987277), (4, 0.38266104)],
         [(2, 0.96805269), (4, 0.68034023), (1, 0.66391909), (0, 0.64251828), (3, 0.50730866)],
         [(2, 0.84748113), (4, 0.8338449),  (1, 0.61795002), (0, 0.60271078), (3, 0.20899911)]]

我想根据这些字符串命名列表中的每个列表:url = ['a', 'b', 'c', 'd']。例如,

>>> a
[(2, 0.90452874), (1, 0.83522302), (4, 0.77591574), (0, 0.72705799), (3, 0.52282226)]
>>> b 
[(3, 0.79298556), (1, 0.78112978), (2, 0.76006395), (0, 0.58570701), (4, 0.40093967)]

等等。那么我如何在 Python 中实现这一点呢?

【问题讨论】:

  • 使用该名称的变量,或使用字典,或 NamedTuple?千种选择...
  • a, b, c, d = sims1,但请阅读What is the XY-problem?。请描述您要解决的问题,而不是您在解决过程中遇到的问题。
  • 你问这个的方式,目前还不清楚。 “标签”是什么意思?你真的应该添加一个你想如何使用 tthis 的例子。

标签: python arrays list


【解决方案1】:

你可以使用字典:

names = ['a', 'b', 'c', 'd', 'e']
named_sims1 = dict(zip(names, sims1))
print(named_sims1['a'])

如果你想以a 而不是x.a 或x['a'] 的形式访问变量,你可以使用这个:

exec(",".join(names) + ' = ' + str(sims1)) # ensure same length

但我不确定,是否建议这样做。

【讨论】:

  • 谢谢你。但是有没有办法在数组类型中做到这一点,而不是创建字典?
  • 如果我们可以将给定的列表转换为它的字符串形式,我们可以使用 exec 进行多重赋值。但是,我不确定我们如何将任意列出的列表序列化为字符串(我现在已经在 SO 中询问过)。在您的情况下,嵌套是预定义的,因此我们可以通过繁琐的方式将其转换为字符串,但我认为这不值得。
【解决方案2】:

使用zip()dict()

result = dict(zip(url, sims1))

确保url 中的元素是'a' 之类的字符串,而不是a 之类的变量名称,否则url 的定义将失败并返回NameError

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2010-10-22
    • 2015-09-29
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多