我有一个类似下面的字典,我想在列表中存储值1,1。
sc_dict=[('n', {'rh': 1}), ('n', {'rhe': 1}), ('nc', {'rhex': 1})]
我想要一个数组[1,1,1]
。
这是我的代码:
dict_part = [sc[1] for sc in sc_dict]
print(dict_part[1])
L1=[year for (title, year) in (sorted(dict_part.items(), key=lambda t: t[0]))]
print(L1)
答案 0 :(得分:3)
>>> [v for t1, t2 in sc_dict for k, v in t2.items()]
[1, 1, 1]
t1
和t2
分别是每个元组的第一项和第二项,而k
,v
是dict t2
中的键值对
答案 1 :(得分:1)
您可以使用解包:
sc_dict=[('n', {'rh': 1}), ('n', {'rhe': 1}), ('nc', {'rhex': 1})]
new_data = [list(b.values())[0] for _, b in sc_dict]
输出:
[1, 1, 1]
通过一个额外的步骤可以变得稍微清洁一点:
d = [(a, b.items()) for a, b in sc_dict]
new_data = [i for _, [(c, i)] in d]
答案 2 :(得分:0)
您可以使用next
检索词典的第一个值,作为列表理解的一部分。
这可行,因为您的词典长度为1。
sc_dict=[('n', {'rh': 1}), ('n', {'rhe': 1}), ('nc', {'rhex': 1})]
res = [next(iter(i[1].values())) for i in sc_dict]
# [1, 1, 1]
答案 3 :(得分:0)
我尝试了如下的简单方法:
sc_dict=[('n', {'rh': 1}), ('n', {'rhe': 1}), ('nc', {'rhex': 1})]
l = []
for i in range(len(sc_dict)):
l.extend(sc_dict[i][1].values())
print l
输出l
为[1, 1, 1]