Nic*_*ick 0 python dictionary tuples list
我正在翻阅一本字典,其中以总统的名字作为我字典的关键字,以及一个元组,其中包含年份开始,服务年限,学期开始时的年龄以及他们来自哪个州.在这种情况下,我只是看看他们为此开始任期的年龄.dictonary的样本:
pres_data={"Reagan": (1981, 8, 69,"California"), "Bush":(1989, 4,64,"Texas")}
Run Code Online (Sandbox Code Playgroud)
字典经历了更多的总统和数据,如上所述,但我不包括它,因为它在这里太多了.
我正在寻找的输出是:
(64,["George Bush"])
Run Code Online (Sandbox Code Playgroud)
所以它将首先显示最小年龄(我假设将使用min()函数来获取它,但它尚未在我的设置中工作)然后是一个共享的总统名称列表那个词典中最年轻的.
我的代码到目前为止:
pres_data={"Reagan": (1981, 8, 69,"California"), "Bush":(1989,4,64,"Texas")}
for key, value in pres_data.items():
age_start_term=value[2]
print(age_start_term,key)
Run Code Online (Sandbox Code Playgroud)
我想在我的age_start_term变量之后放置像youngest = min(age_start_term)这样的东西,但这只会检查那一次迭代.所以我想我都希望得到最小的比较,然后打印一个列表,其中包含与词典中表示的最年轻年龄一致的键.为什么我可以添加到我所拥有的内容中,以便在迭代后将其与所有年龄段进行比较?为了获得与字典中最年轻的年龄相对应的键,我可以沿着这些方向做点什么吗?
allyoungest= [k for k in pres_data if pres_data[k] == #variable representing youngest]
Run Code Online (Sandbox Code Playgroud)
该min函数接受一个参数key,您可以使用该参数从您要比较的项中提取比较键.在你的情况下,像:
youngest = min(pres_data.items(), key=lambda item: item[1][2])
Run Code Online (Sandbox Code Playgroud)
这会给你:
('Bush', (1989, 4, 64, 'Texas'))
Run Code Online (Sandbox Code Playgroud)
你应该能够变成你想要的任何输出格式.
如果你想要一份具有相同最低年龄的所有总统的名单,你可以做另一个传球,正如你猜测的那样:
min_age = youngest[1][2]
all_youngest = [name for name in pres_data if pres_data[name][2] == min_age]
Run Code Online (Sandbox Code Playgroud)