Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从第二个函数多次向函数返回单个变量(不是列表)?_Python_Python 3.x_Return - Fatal编程技术网

Python 从第二个函数多次向函数返回单个变量(不是列表)?

Python 从第二个函数多次向函数返回单个变量(不是列表)?,python,python-3.x,return,Python,Python 3.x,Return,我有第一个功能,这是不可能修改或更改!它显示变量的值(main_index字段不能是列表、元组、字典等。它只是一个简单的变量,必须保持原样) 该函数触发第二个函数,该函数可以返回多个值,因此其思想是以某种方式逐个显示这些多个值,但不将它们放入列表或dict等。第二个函数可以以任何方式更改 代码如下(请考虑到第一个函数不能以任何方式修改,我只是在这里简化它) 作为输出,我得到一个值(因为返回函数结束了脚本) {'7.1.1':{'value':'1'},'7.1.2':{'value':'2'}

我有第一个功能,这是不可能修改或更改!它显示变量的值(
main_index
字段不能是列表、元组、字典等。它只是一个简单的变量,必须保持原样)

该函数触发第二个函数,该函数可以返回多个值,因此其思想是以某种方式逐个显示这些多个值,但不将它们放入列表或dict等。第二个函数可以以任何方式更改

代码如下(请考虑到第一个函数不能以任何方式修改,我只是在这里简化它)

作为输出,我得到一个值(因为返回函数结束了脚本)

{'7.1.1':{'value':'1'},'7.1.2':{'value':'2'}
1.
但我想得到价值观

1
2.
没有对第一个函数进行任何修改


我知道,如果我返回列表,我将能够显示所有值,但是否可以在不修改第一个函数的情况下显示1和2?

在for循环中返回通常不是您想要的,最好在循环中构建数据结构,然后稍后返回,或者返回在理解中构建的整个数据结构。在这里,您可以使用换行符而不是值返回字符串,如下所示:

def生成索引(索引):
字典={'7.1.1':{'value':'1'},'7.1.2':{'value':'2'},'7.100.3':{'value':'3'}
过滤的_dict={}
concatanatedIndex=索引+'。'
对于dictionary.keys()中的k:
如果concatatadex以k表示:
过滤字典[k]=字典[k]
打印(已过滤)
返回'\n'.join(已排序(筛选的索引中的索引的筛选的索引get(indx.get('value'))
这会打印出来

{'7.1.2': {'value': '2'}, '7.1.1': {'value': '1'}}
1
2
最后一条语句的分解:
'\n'.join(已排序(已筛选的dict.get(indx).get('value'),用于已筛选的dict中的indx))

  • 我们使用理解来生成我们感兴趣的数据:
    filtered_dict.get(indx).get('value')for indx in filtered_dict
    ——这实际上是一个生成器理解,但您可以将
    []
    放入列表理解
  • 因为我们在一个字典上进行迭代,而字典不能保证按一定的顺序排列(尽管我相信这在Python 3.6中有所改变),所以我添加了
    sorted
    调用,以确保
    1
    位于
    2
    之前
  • 要将iterable(如列表)转换为字符串,我们可以使用string方法
    .join()
    ,该方法通过将列表中的元素连接在一起创建字符串,并将字符串放在每个元素之间。因此,
    '-hello-'.join(['a','b','c'])
    将变成
    'a-hello-b-hello-c'
实际上,构建返回字符串的一种更简单的方法是迭代dict.values(),而不是实际的dict。如果我们使用的是python version>3.6,我们可以跳过
sorted
调用,因此返回只会变为:
return'\n'


但更好的设计可能是在字典中返回值,并在单独的函数中以特定格式打印它们,该函数仅负责显示。

在for循环中返回通常不是您想要的,最好在循环中构建数据结构,然后稍后返回,或者返回在理解中构建的整个数据结构。在这里,您可以使用换行符而不是值返回字符串,如下所示:

def生成索引(索引):
字典={'7.1.1':{'value':'1'},'7.1.2':{'value':'2'},'7.100.3':{'value':'3'}
过滤的_dict={}
concatanatedIndex=索引+'。'
对于dictionary.keys()中的k:
如果concatatadex以k表示:
过滤字典[k]=字典[k]
打印(已过滤)
返回'\n'.join(已排序(筛选的索引中的索引的筛选的索引get(indx.get('value'))
这会打印出来

{'7.1.2': {'value': '2'}, '7.1.1': {'value': '1'}}
1
2
最后一条语句的分解:
'\n'.join(已排序(已筛选的dict.get(indx).get('value'),用于已筛选的dict中的indx))

  • 我们使用理解来生成我们感兴趣的数据:
    filtered_dict.get(indx).get('value')for indx in filtered_dict
    ——这实际上是一个生成器理解,但您可以将
    []
    放入列表理解
  • 因为我们在一个字典上进行迭代,而字典不能保证按一定的顺序排列(尽管我相信这在Python 3.6中有所改变),所以我添加了
    sorted
    调用,以确保
    1
    位于
    2
    之前
  • 要将iterable(如列表)转换为字符串,我们可以使用string方法
    .join()
    ,该方法通过将列表中的元素连接在一起创建字符串,并将字符串放在每个元素之间。因此,
    '-hello-'.join(['a','b','c'])
    将变成
    'a-hello-b-hello-c'
实际上,构建返回字符串的一种更简单的方法是迭代dict.values(),而不是实际的dict。如果我们使用的是python version>3.6,我们可以跳过
sorted
调用,因此返回只会变为:
return'\n'


但更好的设计可能是返回字典中的值,并在单独的函数中以特定格式打印它们,该函数只负责显示。

您可以调整
生成索引
函数以返回生成器,也就是您可以迭代的生成器(注意下面代码中的最后一行)

您可以阅读发电机或查看

请注意,通过调用此
生成索引
,您已经有点像在寻找一个生成器了!然后可以在其他函数中调用结果,如下所示:

main_index=generate_index(value_to_check)
for index in main_index:
    print(index)

希望这符合您的要求

您可以调整
生成索引
f
main_index=generate_index(value_to_check)
for index in main_index:
    print(index)