我想根据另一个键的条件(例如Gender == 'male')来总结此字典列表中所有人的年龄:
list_of_dicts= [
{"Name": "Ethan", "Gender": "male", "Age": 11},
{"Name": "Nathan", "Gender": "male", "Age": 6},
{"Name": "Sophie", "Gender": "female", "Age": 14},
{"Name": "Patrick", "Gender": "male", "Age": 11}
]
Run Code Online (Sandbox Code Playgroud)
下面的代码完成了它,但我想知道是否有更Pythonic/紧凑的方法来做到这一点?也许类似于字典列表的 SQL 查询?
total_male_age = 0
for dict in list_of_dicts:
if dict.get("Gender") == "male":
total_male_age = total_male_age + dict.get("Age")
#total_male_age = 28
Run Code Online (Sandbox Code Playgroud) 我有Python(咳嗽,家庭作业)的情况,我需要在给定的对象列表中将EACH ELEMENT乘以指定的次数并返回元素的输出.问题是给出的样本输入是不同类型的.例如,一种情况可以输入一个字符串列表,其元素我需要相乘而其他元素可能是整数.所以我的回归类型需要改变.我想这样做而不必测试每种类型的对象是什么.有没有办法做到这一点?我知道在C#中我可以使用"var",但我不知道Python中是否存在这样的东西?
我意识到变量不必声明,但在这种情况下,我无法看到任何解决方法.这是我做的功能:
def multiplyItemsByFour(argsList):
output = ????
for arg in argsList:
output += arg * 4
return output
Run Code Online (Sandbox Code Playgroud)
看看我需要如何添加到输出变量.如果我只是试图取消第一行的输出分配,我得到一个错误,即未定义变量.但是,如果我为空字符串分配0或"",则可能抛出异常,因为您不能将3添加到字符串或"a"添加到整数等等...
以下是一些示例输入和输出:
Input: ('a','b') Output: 'aaaabbbb'
Input: (2,3,4) Output: 36
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在尝试过滤我正在使用的一些数据,以便在我的测量设备中取出一些伪像,例如负数和错误.我一直在玩使用发电机这样做的想法.我使用的是Python 2.7.2
testlist = [12,2,1,1,1,0,-3,-3,-1]
gen = (i for i, x in enumerate(testlist) if x < 0 or x > 2.5)
for i in gen: testlist.pop(i)
print testlist
Run Code Online (Sandbox Code Playgroud)
返回:
[2, 1, 1, 1, 0, -3]
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么-3值出现在更新的"测试列表"中?
我有一个生成有限序列的生成器.为了确定这个序列的长度,我尝试了这两种方法:
seq_len = sum([1 for _ in euler14_seq(sv)]) # list comp
Run Code Online (Sandbox Code Playgroud)
和
seq_len = sum(1 for _ in euler14_seq(sv)) # generator expression
Run Code Online (Sandbox Code Playgroud)
sv 是序列的常量起始值.
我原本以为列表理解会慢一点,生成器表达式会更快,但事实证明相反.
我假设第一个会占用更多的内存,因为它首先在内存中创建一个完整的列表 - 部分原因我还认为它会更慢.
我的问题:这种观察是否可以推广?这是因为第二个声明与第一个声明中涉及两个发生器吗?
我看过这些什么是计算生成器/迭代器中项目数的最短方法?,生成器输出的长度, 是否有任何内置的方法来获取python中迭代的长度?并且看到了一些测量序列长度的其他方法,但我对list comp与generator表达式的比较特别好奇.
PS:当我决定根据昨天提出的问题解决欧拉项目#14时出现了这个问题.
(顺便说一句,关于使用'_'不需要变量值的地方的一般感觉是什么).
这是在Windows 7 64位下使用Python 2.7.2(32位)完成的
我来自Java背景,刚开始使用Python.大多数事情都很容易上手,但我很难理解我刚刚发现的一种叫做列表理解的语言.这是什么在Python列表理解?这与Java中的语言结构相比如何?问题是它无处不在,几乎我在这里和那里找到的所有例子都使用它.
对于以下示例,请允许我了解其工作原理.
[x**2 for x in range(10)]
Run Code Online (Sandbox Code Playgroud)
然后就是这个.
[j + k for j in 'abc' for k in 'def']
Run Code Online (Sandbox Code Playgroud)
除此之外,我还在Stackoverflow上看到过这样的事情.
(x for x in (0,1,2,3,4))
Run Code Online (Sandbox Code Playgroud)
还有这样的事情.
total = sum(x+y for x in (0,1,2,3) for y in (0,1,2,3) if x < y)
Run Code Online (Sandbox Code Playgroud)
这开始变得混乱,你能帮我吗?
作为输入,我得到一个包含子列表(带有变量计数)的主列表.
masterList = [[23,12],[34,21],[25,20]]
Run Code Online (Sandbox Code Playgroud)
子列表的数量各不相同.此处显示3个子列表,但数量可能会有所不同.
我希望得到最多的第一记录和最小的第二记录.
在这种情况下,我知道我可以像这样硬编码......
maxNum = max(masterList[0][0], masterList[1][0], masterList[2][0])
Run Code Online (Sandbox Code Playgroud)
如何编写一个模块来接受具有不同数量的子列表并获得max,min的masterList?
谢谢.
我有一个名单列表,allBins其中包含几个表示不同容器的列表,这些容器内部是不同数量的元组,格式为(iD,volume).我需要通过对元组的第二个元素求和来迭代来对每个二进制数中的项的总和进行求和.
我尝试了很多东西:
sum(bin[1] for bin in allBins)给我一个'列表索引超出范围'的错误,大概是因为有些垃圾箱有多个元组?
allBins = [[(3,20)],[(1,11),(0,6)],[(4,16),(2,5)]]
Run Code Online (Sandbox Code Playgroud)
我需要一行代码,根据我选择总和的bin,给出以下整数:
第一箱: 20
第二箱: 17
第3箱: 21
我正在将一些代码从Python翻译成C++.我遇到了以下情况:
set(x for listX in listY for x in listX)
Run Code Online (Sandbox Code Playgroud)
我非常精通C++,并且熟悉Python中的一些基本结构.在上面的代码中,我知道正在创建一个集合,但我不理解括号内的代码.有帮助吗?
找到关于如何检查字符串列表是否在一行内的这个很好的答案如何检查 一行是否有列表中的一个字符串?
但是尝试用dict中的键做类似的事情似乎并不适合我:
import urllib2
url_info = urllib2.urlopen('http://rss.timegenie.com/forex.xml')
currencies = {"DKK": [], "SEK": []}
print currencies.keys()
testCounter = 0
for line in url_info:
if any(countryCode in line for countryCode in currencies.keys()):
testCounter += 1
if "DKK" in line or "SEK" in line:
print line
print "testCounter is %i and should be 2 - if not debug the code" % (testCounter)
Run Code Online (Sandbox Code Playgroud)
输出:
['SEK', 'DKK']
<code>DKK</code>
<code>SEK</code>
testCounter is 377 and should be 2 - if not debug the code
Run Code Online (Sandbox Code Playgroud)
想想也许我的问题是因为.keys() …
items = [ "Abby","Brenda","Cindy","Diddy" ]
for item in items:
print(item)
Run Code Online (Sandbox Code Playgroud)
我用来为输出项编写这个语句.
有没有办法合并打印和循环.就像是:
print(item for item in items)
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我!
python ×10
python-2.7 ×2
dictionary ×1
generator ×1
json ×1
list ×1
python-3.x ×1
rss ×1
sequences ×1
set ×1
types ×1