Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Dictionary_For Loop_List Comprehension - Fatal编程技术网

Python 将循环转换为列表理解

Python 将循环转换为列表理解,python,list,dictionary,for-loop,list-comprehension,Python,List,Dictionary,For Loop,List Comprehension,我正在尝试将代码转换为列表理解,但无法解决此问题 我的代码: dicts = [ {"p": 1, "p": 2, "olp": 3, "r": 4}, {"s": 1, "o": 2, "e": 3, "cs": 4}, {"vc":1, "txc":2, "faw":3, "e": 4} ] l = [] for d in dicts: for k, v in sorted(d.items(), key=lambda kv: kv[1]):

我正在尝试将代码转换为列表理解,但无法解决此问题

我的代码:

dicts = [
    {"p": 1, "p": 2, "olp": 3, "r": 4}, 
    {"s": 1, "o": 2, "e": 3, "cs": 4}, 
    {"vc":1, "txc":2, "faw":3, "e": 4}
]

l = []

for d in dicts:
    for k, v in sorted(d.items(), key=lambda kv: kv[1]):
        if v % 4 == 0:
            if len(k) > 1:
                l.append(k[1])
            else:
                l.append(k)
        elif v % 2 == 0:
            if len(k) > 2:
                l.append(k[0])
            else:
                l.append(k)
print(''.join(l))
我试过了,但没用,你能帮我吗

l = [
    k[0] if len(k)>2 else k elif v % 2 == 0 
    k[1] if len(k)>1 else k if k % 4 == 0  
    for k,v in sorted(d.items(), key=lambda kv: kv[1]) for d in dicts
]
l
的预期输出:

['p', 'r', 'o', 's', 't', 'e']

重新格式化为一行列表,代码如下:

>>> l = [k[1] if v%4 == 0 and len(k) > 1 else k[0] if len(k) > 2 else k for d in dicts for k,v in sorted(d.items(), key=lambda kv: kv[1]) if v%2 == 0]
>>> l
['p', 'r', 'o', 's', 't', 'e']
或者将格式设置得更精细一些:

l = [
     k[1] if v%4 == 0 and len(k) > 1
     else k[0] if len(k) > 2 
     else k
     for d in dicts
     for k,v in sorted(d.items(), key=lambda kv: kv[1])
     if v%2 == 0
     ]
据我所知,您也不需要在
d.items()
上调用
sorted()
,因此您可以忽略它,除非在MWE之外需要它。

if
-语句不同。