【问题标题】:Python how to generate dicts from names and reversePython如何从名称和反向生成字典
【发布时间】:2013-05-12 05:14:13
【问题描述】:

我想简化我的代码,尤其是避免使用方括号;所以我的问题是:

def someFunction():
    someString = "Hi!"
    someNumber = 22
    somePointer = ""
    someList = []

    names_list = ['someString','someNumber','somePointer','someList']
    val_list = [someString, someNumber, somePointer, someList]

    someDict = {}

    for i in range( len( names_list ) ) :
        someDict[names_list[i]] = val_list[i]  

    someOtherFunction( someDict )

def someOtherFunction( dict ):
    for key, value in dict.iteritems() :
        print key, value

    print someString, someNumber

someFunction()

这样可以吗?

【问题讨论】:

  • 这个很不清楚。你想达到什么目的,somePointer、s_name 和 d_name 是什么?
  • "特别是避免使用方括号"我不喜欢这样的地方,你应该使用方括号
  • 已编辑以澄清我的观点。需要在不存在的地方生成变量。关于括号,我用的比较多,但没必要就不用了,这样代码更易读。

标签: python dictionary code-generation generator


【解决方案1】:

不明白为什么这很有用 如果您知道变量列表并且它们将在某些函数中使用

# generate names and values again at other place
def foo():
    for d in someDict :
        d_name = d

然后你可以在函数调用期间解压它们

def foo(someString=None,
        someNumber=None,
        somePointer=None,
        someList=None):
    pass

foo(**someDict)

【讨论】:

    【解决方案2】:

    如果我理解正确,您需要一个将变量名称与值相关联的字典。我建议您建立一个包含名称的列表和一个包含值的列表。然后,您将项目附加到您的字典。

    someString = "Hi!"
    someNumber = 22
    somePointer = 4
    someList = []
    
    names_list = ['someString','someNumber','somePointer','someList']
    val_list = [someString, someNumber, somePointer, someList]
    len_list = len(val_list)
    
    someDict = {}
    
    for i in range(len_list) :
        someDict[names_list[i]] = val_list[i]  
    

    然后,你可以查询你的 dict 做什么,比如说

    >>> someDict['someString']
    'Hi!'
    

    【讨论】:

    • 投票寻求帮助。我编辑了我的代码,以更清楚地说明我需要在函数中生成不存在的变量。
    【解决方案3】:

    我发现最简单的方法是使用 dict() 内置构造函数:

    someString = "Hi!"
    someNumber = 22
    somePointer = ""
    someList = []
    
    someDict = dict( 
        string = someString, number = someNumber,
        pointer = somePointer, list = someList )
    
    print someDict
    
    Output : { "string" : "Hi", "number" : 22, "pointer" : "", "list" : [] }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      • 2021-01-23
      • 2014-05-17
      • 2020-05-25
      • 1970-01-01
      • 2018-10-27
      • 1970-01-01
      相关资源
      最近更新 更多