Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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 使用列表理解创建使用dict值组合在一起的字符串列表_Python - Fatal编程技术网

Python 使用列表理解创建使用dict值组合在一起的字符串列表

Python 使用列表理解创建使用dict值组合在一起的字符串列表,python,Python,我有一张清单,上面写着: { "address": "TestA", "zipcode": "95723", "postofficename": "TestB" } ['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result] 我想做一个列表理解,创建一个字符串列表,该列表以一个名为add

我有一张清单,上面写着:

{
    "address": "TestA",
    "zipcode": "95723",
    "postofficename": "TestB"
}
['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
我想做一个列表理解,创建一个字符串列表,该列表以一个名为
address
的输入参数开头:

[
    "TestA, 95723 TestB"
]
我似乎无法让它发挥作用,也不确定从这里走到哪里,我尝试了什么:

startswith_list = \
        [r = '{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]

这里有两个错误:

[r = '{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
首先,
r=…
是一个语法错误,因为理解中的第一件事必须是一个表达式,如下所示:

{
    "address": "TestA",
    "zipcode": "95723",
    "postofficename": "TestB"
}
['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
接下来,如果
位于错误的位置,则
应位于循环之后:

['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) for r in result if r['address'].startswith(address)]

这里有两个错误:

[r = '{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
首先,
r=…
是一个语法错误,因为理解中的第一件事必须是一个表达式,如下所示:

{
    "address": "TestA",
    "zipcode": "95723",
    "postofficename": "TestB"
}
['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) if r['address'].startswith(address) for r in result]
接下来,如果
位于错误的位置,则
应位于循环之后:

['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) for r in result if r['address'].startswith(address)]

语法错误是由于在列表理解的开始处有
[r=…
,在
之前有
if
,对于
,我通常会避免使用反斜杠进行行连续体。方括号可以很好地分解代码,请参见下文

奖励点:使用将dict格式化为字符串

startswith_list=[
“{address},{zipcode}{postofficename}”。格式映射(r)
对于结果中的r
如果r['address'].startswith(地址)
]

语法错误是因为在列表理解的开始处有
[r=…
,在
之前有
if
,用于
。另外,我通常也会避免使用反斜杠进行行连续体。方括号可以很好地分解代码,请参见下文

奖励点:使用将dict格式化为字符串

startswith_list=[
“{address},{zipcode}{postofficename}”。格式映射(r)
对于结果中的r
如果r['address'].startswith(地址)
]

如果您想要列表理解,需要将条件放在末尾而不是中间,这就是您的情况:

result = [{"address": "TestA", "zipcode": "95723", "postofficename": "TestB"}]
address = "Test"
startswith_list = ['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) for r in result if r['address'].startswith(address)]
print(startswith_list)  # ['TestA, 95723 TestB']

你也可以考虑使用所谓的F字符串,如果你使用Python版本3.6或更高,并且控制输入(或者知道不会有恶意输入)。

startswith_list = [f"{r['address']}, {r['zipcode']} {r['postofficename']}" for r in result if r['address'].startswith(address)]

如果您想要列表理解,需要将条件放在末尾而不是中间,这就是您的情况:

result = [{"address": "TestA", "zipcode": "95723", "postofficename": "TestB"}]
address = "Test"
startswith_list = ['{}, {} {}'.format(r['address'], r['zipcode'], r['postofficename']) for r in result if r['address'].startswith(address)]
print(startswith_list)  # ['TestA, 95723 TestB']

你也可以考虑使用所谓的F字符串,如果你使用Python版本3.6或更高,并且控制输入(或者知道不会有恶意输入)。

startswith_list = [f"{r['address']}, {r['zipcode']} {r['postofficename']}" for r in result if r['address'].startswith(address)]

r=…
在理解的开头是一个语法错误。首先应该是一个表达式,比如
'{},{}{}。格式(r['address'],r['zipcode'],r['postofficename'])
@ForceBru好的,但只需删除“r=…”如果你知道如何解决这个问题,请添加一个答案:)
r=…
在理解的开头是一个语法错误。首先应该是一个表达式,比如
{},{}{}。格式(r['address'],r['zipcode'],r['postofficename'])
@ForceBru好的,但只需删除“r=…”无法解决问题,如果您知道如何解决此问题,请添加答案:)