【问题标题】:Returning a dictionary of numbers from a function in python从python中的函数返回数字字典
【发布时间】:2012-01-11 14:42:11
【问题描述】:

我想通过将列表的每个值分配给“喜欢”来返回一个元素字典,但我一直遇到错误。这是我的代码。

def f([a,b,c]):
    d={a:'like'}
    for x in [a,b,c]:
        d[x]='like'
    return d

【问题讨论】:

  • “一个错误” - 想要更具体一点?
  • 我想我可能知道问题所在,有没有办法将列表转换为元组?
  • 您的代码有多个错误,包括语法错误和逻辑错误。您收到了哪些特定的错误消息?
  • 错误是“无效语法”
  • 将您的列表转换为元组不会有任何帮助。

标签: python dictionary hashtable


【解决方案1】:

dict.fromkeys 是一个方便的构造函数:

>>> dict.fromkeys([1,2,3], 'like')
{1: 'like', 2: 'like', 3: 'like'}

【讨论】:

    【解决方案2】:

    我猜这就是你想要做的:

    def f(my_list):
        return dict((x, "like") for x in my_list)
    

    例子:

    >>> f([1, 2, 3])
    {1: 'like', 2: 'like', 3: 'like'}
    

    在Python 2.7或以上版本中,函数也可以写成

    def f(my_list):
        return {x: "like" for x in my_list}
    

    关于您的原始代码:没有 def f([a, b, c]) 这样的语法。我只能猜测这应该是什么意思,参数列表中没有方括号。如果要传入列表,请使用单个参数。

    在代码的更新版本中,其他错误已被删除。 d 的初始化仍然很奇怪,因为使用空字典就足够了:

    d = {}
    

    【讨论】:

      【解决方案3】:

      在 Python 2.7 之上,您可以进行 dict 理解:

      >>> my_list = [1, 2, 3,]
      >>> {i: 'like' for i in my_list}
      {1: 'like', 2: 'like', 3: 'like'}
      

      编辑:看起来@SvenMarnach 在我输入此内容时编辑了他的评论。

      【讨论】:

        【解决方案4】:

        我不确定你想做什么,但可能是这样的:

        def f(lst):
            d = {}
            for x in lst:
                d[x] = 'like'
            return d
        

        如果是,您可以这样做或更好:

        >>> lst = ['a', 'b', 'c']
        >>> dict((x, 'like') for x in lst)
        {'a': 'like', 'b': 'like', 'c': 'like'}
        

        【讨论】:

          猜你喜欢
          • 2018-05-15
          • 2017-05-07
          • 2020-04-19
          • 2019-11-22
          • 2011-05-01
          • 2017-11-23
          • 2020-12-07
          • 2019-03-23
          • 2015-06-05
          相关资源
          最近更新 更多