不好意思表达错误,我修改了一下,从字典里面取值
本帖最后由 lanyacp 于 2020-9-9 09:46 编辑从字典中的的字典取值
比如字典{{姓名:张三,结果:35%,身高:170},{姓名:李四,结果:32%,身高:160},{姓名:王五,结果:28%,身高:180}}
从字典中去取出结果大于30%的人的身高值,组成一个列表结果【170,160】
如何去编写
求大神解决
谢谢 尽量用个函数,因为后面有好多个字典{:5_109:} 搞三个列表,一个放姓名,一个放年龄,一个放身高。
循环年龄列表判断是否满足条件,满足则获取下标,并返回对应身高下标并加入新列表,循环结束返回新列表。 a ={'张三':['35','170'],'李四':['32','160'],'王五':['28','180']}
查询方式
a['张三'] ['35', '170']
a['张三'] '35'
查到的值在进行比大小就好了 a = [{'姓名': '张三', '年龄': 35, '身高': 170}, {'姓名': '李四', '年龄': 32, '身高': 160}, {'姓名': '王五', '年龄': 28, '身高': 180}]
b=['身高'] for i in range(len(a)) if a['年龄']>30]
print(b)
写个循环比较就好了 yhhpf 发表于 2020-9-9 08:44
搞三个列表,一个放姓名,一个放年龄,一个放身高。
循环年龄列表判断是否满足条件,满足则获取下标,并返 ...
三个列表取出来了,下面的怎么写?lilist1=[年龄],list2=[身高] 你这个本身就有问题吧
{{姓名:张三,年龄:35,身高:170},{姓名:李四,年龄:32,身高:160},{姓名:王五,年龄:28,身高:180}}
这个数据本身就有问题,看上去像是大字典里面套小字典,但是外层根本就不是字典啊,外层是个列表吧?列表应该用中括号,如下:
[{"姓名":"张三","年龄":35,"身高":170},{"姓名":"李四","年龄":32,"身高":160},{"姓名":"王五","年龄":28,"身高":180}]
list1=[{"姓名":"张三","年龄":35,"身高":170},{"姓名":"李四","年龄":32,"身高":160},{"姓名":"王五","年龄":28,"身高":180}]
heigh=[]
for people in list1:
if people['年龄']>30:
heigh.append(people['身高'])
print(heigh)
list1=[{'姓名':'张三','年龄':35,'身高':170},{'姓名':'李四','年龄':32,'身高':160},{'姓名':'王五','年龄':28,'身高':180}]
list2=[]
for each in list1:
if each['年龄']>30:
list2.append(each['身高'])
print(list2)
还有字典里是不能放字典的,因为字典是可变的(不可哈希),字典里不能放可变的键和值
sunrise085 发表于 2020-9-9 09:15
你这个本身就有问题吧
这个数据本身就有问题,看上去像是大字典里面套小字典,但是外层根本就不是字典啊 ...
这是一个变化的表,也就是几个json 数据类型,每次获取的姓名年龄身高都不同, 函数如何去写呢? lanyacp 发表于 2020-9-9 09:29
这是一个变化的表,也就是几个json 数据类型,每次获取的姓名年龄身高都不同, 函数如何去写呢?
直接把那几行放在函数里面就行了
def find_heigh(list1):
heigh=[]
for people in list1:
if people['年龄']>30:
heigh.append(people['身高'])
return heigh
list1=[{"姓名":"张三","年龄":35,"身高":170},{"姓名":"李四","年龄":32,"身高":160},{"姓名":"王五","年龄":28,"身高":180}]
print(find_heigh(list1)) sunrise085 发表于 2020-9-9 09:32
直接把那几行放在函数里面就行了
如果年龄是一个百分数,可以去直接这样比较吗? lanyacp 发表于 2020-9-9 09:35
如果年龄是一个百分数,可以去直接这样比较吗?
python中没有百分数,只有小数和字符串
不知道你所谓的百分数是什么鬼 我开始想的简单力,遗漏了百分数这个麻烦 sunrise085 发表于 2020-9-9 09:32
直接把那几行放在函数里面就行了
如果年龄对应结果是一个百分数,怎么去比较呢? 定义一个一维指针数组:
char score[] = {'姓名','性别','年龄','身高','职业','联系电话'}; //定义数组,存放资料
定义一个搜索函数
void *search(void(*pointer)); //函数声明
用循环将资料补齐
for (i = 0;i < N;i++)
{
for (j = 0;j < 6;j++)
{
scanf("%s",*(pointer + i) + j);
}
}
因为C语言允许一维指针数组不定长,所以,行数是可以不指定的,有多少联系人,那个 N 就是多少,最后,完善程序即可达到你的目的
风过无痕1989 发表于 2020-9-9 10:17
定义一个一维指针数组:
char score[] = {'姓名','性别','年龄','身高','职业','联系电话'}; //定义 ...
我用的python..... lanyacp 发表于 2020-9-9 10:24
我用的python.....
那是我看错了,从论坛那里看到新的问题,没有注意是哪个板块,sorry ! lanyacp 发表于 2020-9-9 09:53
如果年龄对应结果是一个百分数,怎么去比较呢?
你先把你的数据整理好。
还是那句话,python中没有百分数,你这个到底是小数还是字符串?
你看你的数据
1、姓名、张三、结果、身高这些都是字符串,但是为什么没有引号?
2、中文冒号是什么鬼?
3、最外层的大括号又是什么鬼?
4、这个35%、32%、28%,到底是什么形式的数据?是0.35、0.32、0.28,还是"35%"、"32%"、"28%"?
下面程序第四行,帮你解释一下。
people['结果']这个是取出字典中key为'结果'的值,即'35%',然后再去掉该字符串的最后一位% ,people['结果'][:-1],得到"35",再用int()将之转为数字,最后和30进行比较
def find_heigh(list1):
heigh=[]
for people in list1:
if int(people['结果'][:-1])>30:
heigh.append(people['身高'])
return heigh
list1=[{"姓名":"张三","结果":"35%","身高":170},{"姓名":"李四","结果":"32%","身高":160},{"姓名":"王五","结果":"28%","身高":180}]
print(find_heigh(list1)) lanyacp 发表于 2020-9-9 09:11
三个列表取出来了,下面的怎么写?lilist1=[年龄],list2=[身高]
name = ['张三','李四','王五']
result = ['35%','32%','29.9%']
height =
#姓名、年龄、身高按顺序对应
height_list = []
for each in result:
if float(each[:-1]) >= 30 :
height_list.append(height)
print(height_list)
页:
[1]