类似于:
num_dict = {'number':[1,2,3]}
lett_dict = {'letter': ['a','b','c']}
成为:
[{'number':1,'letter':'a'},{'number':2,'letter':'b'},{'number':3,'letter':'c'}]
编辑
换句话说:
{'number': [1, 2, 3], 'letter': ['a', 'b', 'c'],'symbol':['$','%','^']}
成为
[{'number':1,'letter':'a','symbol':'$'},{'number':2,'letter':'b','symbol':'%'},{'number':3,'letter':'c','symbol':'^'}]
答案 0 :(得分:1)
我能想到的最pythonic的方式是使用列表理解:
// path to the static react build directory
const frontend = path.join(__dirname, 'react-app/build');
// map the requests to the static react build directory
app.use('/', express.static(frontend));
// all the unknown requests are redirected to the react SPA
app.use(function (req, res, next) {
res.sendFile(path.join(frontend, 'index.html'));
});
[{'number':n, 'letter':l} for n,l in zip(list(num_dict.values())[0], list(lett_dict.values())[0])]
用于从一个循环中返回两个值的组合值,而使用zip
是因为将dict值转换为列表时,它会返回一个列表列表,例如[0]
因此[['a', 'b', 'c']]
仅用于获取内部列表,其余部分似乎很明显。
答案 1 :(得分:1)
这是一种方法
[{'number': n, 'letter': l} for n, l in zip(num_dict['number'], lett_dict['letter'])]
答案 2 :(得分:0)
一些猛烈的撞击之后:
<AnchorPane fx:id="anchorPane" id="AnchorPane" prefHeight="597.0" prefWidth="726.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.homeo.home.FXMLDocumentController" />
结果:
>>> d = {'number': [1, 2, 3], 'letter': ['a', 'b', 'c'],'symbol':['$','%','^']}
>>> [dict(zip(d.keys(), v)) for v in zip(*(d[k] for k in d.keys()))]
答案 3 :(得分:0)
老实说,我不知道“ pythonic”在实践中是什么意思。
您给出了两个潜在问题的不同示例。如果您需要通用解决方案,则可以使用辅助功能。
from typing import *
def zip_dict(*dicts: Dict[str, Iterable[Any]],
keys: Optional[Iterable[str]] = None
) -> Iterable[Dict[str, Any]]:
use_keys = keys if keys is not None else list(map(lambda d: next(iter(d.keys())), dicts))
indexed_dicts = {k: dicts[i][k] for i, k in enumerate(use_keys)}
ret_length = len(dicts[0][use_keys[0]])
return[
dict((k, indexed_dicts[k][i]) for k in use_keys)
for i in range(ret_length)
]
#test it out
from pprint import pprint
test_data = {'number': [1, 2, 3], 'letter': ['a', 'b', 'c'],'symbol':['$','%','^']}
first_test = zip_dict({'number': test_data['number']}, {'letter': test_data['letter']})
pprint(first_test)
second_test = zip_dict(test_data, test_data, test_data, keys = ['number', 'letter','symbol'])
pprint(second_test)
打印:
[{'letter': 'a', 'number': 1},
{'letter': 'b', 'number': 2},
{'letter': 'c', 'number': 3}]
[{'letter': 'a', 'number': 1, 'symbol': '$'},
{'letter': 'b', 'number': 2, 'symbol': '%'},
{'letter': 'c', 'number': 3, 'symbol': '^'}]
您会注意到,我没有做出任何努力来防止此函数引发错误,或指定该函数应如何处理“怪异”输入。我不知道你的背景是什么;如果输入“应该”始终正确地成形,那么可能很好。