我在collections.OrderedDict上课时遇到了一些麻烦.我在Raspberry上使用Python 2.7,这是Raspberry Pi的Debian发行版.我正在尝试打印两个词典,以便进行文本冒险的比较(并排).订单对于准确比较至关重要.无论我尝试用他们通常无序的方式打印字典.
这是我在RPi上执行的操作:
import collections
ship = {"NAME": "Albatross",
"HP":50,
"BLASTERS":13,
"THRUSTERS":18,
"PRICE":250}
ship = collections.OrderedDict(ship)
print ship
# OrderedDict([('PRICE', 250), ('HP', 50), ('NAME', 'Albatross'), ('BLASTERS', 13), ('THRUSTERS', 18)])
Run Code Online (Sandbox Code Playgroud)
显然有些东西不对,因为它正在打印函数调用并将键和值组放入嵌套列表中......
这是我通过在PC上运行类似的东西得到的:
import collections
Joe = {"Age": 28, "Race": "Latino", "Job": "Nurse"}
Bob = {"Age": 25, "Race": "White", "Job": "Mechanic", "Random": "stuff"}
#Just for clarity:
Joe = collections.OrderedDict(Joe)
Bob = collections.OrderedDict(Bob)
print Joe
# OrderedDict([('Age', 28), ('Race', 'Latino'), ('Job', 'Nurse')])
print Bob
# OrderedDict([('Age', 25), ('Race', 'White'), ('Job', …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用它OrderedDict,但它仍然不按顺序创建.例如,
from collections import OrderedDict
OrderedDict(a=1,b=2,c=3)
Run Code Online (Sandbox Code Playgroud)
产量
OrderedDict([('a', 1), ('c', 3), ('b', 2)])
Run Code Online (Sandbox Code Playgroud)
而不是预期的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
Run Code Online (Sandbox Code Playgroud)
我怎样才能确保按照我想要的正确顺序创建它?
Pandas中的列名分配是否有理由支持大写而不是小写?
例:
dframe = DataFrame({'city':['Alma','Brian Head', 'Fox Park'],
'altitude':[3158,3000,2762]})
Run Code Online (Sandbox Code Playgroud)
返回一个DataFrame,其中包含订单高度,城市中的列.
鉴于:
dframe = DataFrame({'City':['Alma','Brian Head', 'Fox Park'],
'altitude':[3158,3000,2762]})
Run Code Online (Sandbox Code Playgroud)
返回一个DataFrame,其中包含City,altitude的顺序列.
这是大熊猫特有的或一般的python行为吗?
请帮助我看看下面我缺少什么。我首先创建了班级的三个对象,并将它们添加到集合列表中。在创建任何其他对象之前,我要检查以确保该人在列表中不存在。如果此人已经存在,则不应再次创建该人。我希望通过执行此检查if prompt_fname == person.fname and prompt_lname == person.lname:。显然,我没有正确执行此操作,因为该程序仍然运行并创建了列表中已经存在的同一个人。它创造了这个人两次。我该如何进行修改以捕获此信息,以便不再创建列表中已有的人。同样,不应在循环的每次迭代中一次又一次地创建任何新人员。我是编程新手,所以请不要在答案中遗漏太多细节。非常感谢。
class Person(object):
personslist = []
'''Creates a person object'''
def __init__(self, firstname, lastname):
self.lname = lastname.title()
self.fname = firstname.title()
Person.personslist.append(self)
def __str__(self):
return "{0} {1}".format(self.fname, self.lname)
def __repr__(self):
return "{0} {1}".format(self.fname, self.lname)
Person("Adamu", "Emeka")
Person("Femi", "Ojukwu")
Person("Wole", "Jonathan")
prompt_fname = "Adamu"
prompt_lname = "Emeka"
print(Person.personslist)
for person in Person.personslist:
if prompt_fname == person.fname and prompt_lname == person.lname:
pass
else:
Person(prompt_fname, prompt_lname)
print(Person.personslist)
Run Code Online (Sandbox Code Playgroud)
产量
[Adamu Emeka, Femi Ojukwu, …Run Code Online (Sandbox Code Playgroud)